zoukankan      html  css  js  c++  java
  • 基于注解的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

  • 相关阅读:
    Javascript FP-ramdajs
    微信小程序开发
    SPA for HTML5
    One Liners to Impress Your Friends
    Sass (Syntactically Awesome StyleSheets)
    iOS App Icon Template 5.0
    React Native Life Cycle and Communication
    Meteor framework
    RESTful Mongodb
    Server-sent Events
  • 原文地址:https://www.cnblogs.com/slgkaifa/p/6797343.html
Copyright © 2011-2022 走看看