title: Mybatis XML vs Annotation
body: <p>I have read the book and documentation about Mybatis, both XML and Annotation does what I want, but from myBatis official website, they claim XML is a better way of doing Mappers, because Java annotation has limitations. </p>
  
  <p>I personally prefer Annotations e.g</p>
  
  <pre><code>public interface PersonDAO {
  
      String INSERT_PERSON = "insert into person (title,firstName,surName,jobTitle,dob,email,mobile,landPhone,fax,twitter,facebook,linkedin) VALUES  (#{title},#{firstName},#{surName},#{jobTitle},#{dob},#{email},#{mobile},#{landPhone},#{fax},#{twitter},#{facebook},#{linkedin})";
      String UPDATE_PERSON = "update person set title=#{title},firstName=#{firstName},surName=#{surName},jobTitle=#{jobTitle},dob=#{dob},email=#{email},mobile=#{mobile},landPhone=#{landPhone},fax=#{fax},twitter=#{twitter},facebook=#{facebook},linkedin=#{linkedin} where id=#{id}";
      String GET_PERSON_BY_ID = "SELECT * FROM vw_person WHERE id = #{personId}";
      String DELETE_PERSON = "DELETE FROM person WHERE id = #{personId}";
  
      @Select(GET_PERSON_BY_ID)
      public PersonVO doSelectPerson(long personId) throws Exception;
  
      @Update(UPDATE_PERSON)@Options(flushCache = true, useCache = true)
      public int doUpdatePerson(PersonVO vo) throws Exception;
  
  
      @Insert(INSERT_PERSON)@Options(useGeneratedKeys = true, keyProperty = "id", flushCache = true)
      public int doCreatePerson(PersonVO person) throws Exception;
  
      @Delete(DELETE_PERSON)@Options(flushCache = true)
      public int doDeletePerson(long personId) throws Exception;
  
  }
  </code></pre>
  
  <p>I wonder what the limitation is? Nothing seems to appear obvious to me.</p>