基於注解的Mybatis mapper 接口注意事項


       基於注解的Mybatis mapper 接口功能沒有mapper xml配置文件豐富,並且動態sql語句的靈活性不能和xml配置相比。

這里僅僅說一下基於注解的動態sql注意事項:

  • Mybatis提供注解 @InsertProvider, @UpdateProvider,@DeleteProvider和 @SelectProvider來提供動態sql功能。

  • 提供動態sql的方法參數僅僅有2種可能:無參數和一個參數。一個參數又分為2種情況:參數類型和mapper 接口方法參數同樣,還有一個就是Map<String,Object>類型參數。這也就是說。你的mapper接口方法參數非常多非常多,而Mybatis會把他們放到map里面。這樣提供動態sql的方法中,能夠從map里面獲取。

  • 提供動態sql的方法和xml配置動態sql非常大差別。提供動態sql的方法,大多是自己組裝sql(Mybatis提供的org.apache.ibatis. jdbc.SQL 功能也是非常有限制的),而xml配置的(mybatis有一套自己的動態sql語法)動態sql,Mybatis會解析,自己組裝sql。

  • mapper 接口方法的參數假設有多個,須要@Param  注解(沒有的話,Mybatis自己主動生成parm{i}等這種名字),由於直到java8 通過開啟編譯參數-parameters ,反射才會得到參數名稱,所以Mybaitis僅僅有通過方法參數注解獲得。Spring MVC里面的方法參數是通過字節碼操作的。

  • 盡量用xml配置結合mapper 接口。

  • 假設是動態創建表功能,要用${}。字符串直接替換。而不是用#{}(Mybatis用typeHandlers賦值取值)

  • 假設Mybatis相應的java類型和數據庫類型沒有相應的映射關系(取值賦值),就僅僅能通過自己寫typeHandlers,給Mybatis配置實現。

    比如java8 的新增的時間類型Mybatis如今還沒支持。

  • 建議大家多讀幾遍英文版的Java Persistence with MyBatis 3


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM