基于注解的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

基于注解的Mybatis mapper 接口注意事项的更多相关文章

  1. Mybatis Mapper接口是如何找到实现类的-源码分析

    KeyWords: Mybatis 原理,源码,Mybatis Mapper 接口实现类,代理模式,动态代理,Java动态代理,Proxy.newProxyInstance,Mapper 映射,Map ...

  2. SpringBoot入门之基于注解的Mybatis

    今天学习下SpringBoot集成mybatis,集成mybatis一般有两种方式,一个是基于注解的一个是基于xml配置的.今天先了解下基于注解的mybatis集成. 一.引入依赖项 因为是mybat ...

  3. AOP之proceedingjoinpoint和joinpoint区别(获取各对象备忘)、动态代理机制及获取原理代理对象、获取Mybatis Mapper接口原始对象

    现在AOP的场景越来越多,所以我们有必要理解下和AOP相关的一些概念和机制. import org.aspectj.lang.reflect.SourceLocation; public interf ...

  4. Mybatis mapper接口与xml文件路径分离

    为什么分离 对于Maven项目,IntelliJ IDEA默认是不处理src/main/java中的非java文件的,不专门在pom.xml中配置<resources>是会报错的,参考这里 ...

  5. 关于Mybatis的@Param注解 及 mybatis Mapper中各种传递参数的方法

    原文:https://blog.csdn.net/mrqiang9001/article/details/79520436 关于Mybatis的@Param注解   Mybatis 作为一个轻量级的数 ...

  6. MyBatis Mapper 接口如何通过JDK动态代理来包装SqlSession 源码分析

    我们以往使用ibatis或者mybatis 都是以这种方式调用XML当中定义的CRUD标签来执行SQL 比如这样 <?xml version="1.0" encoding=& ...

  7. mybatis mapper接口开发dao层

    本文将探讨使用 mapper接口,以及 pojo 包装类进行 dao 层基本开发 mybatis dao 层开发只写 mapper 接口 其中需要 开发的接口实现一些开发规范 1. UserMappe ...

  8. spring中实现基于注解实现动态的接口限流防刷

    本文将介绍在spring项目中自定义注解,借助redis实现接口的限流 自定义注解类 import java.lang.annotation.ElementType; import java.lang ...

  9. myBatis mapper接口方法重载问题

    在mybatis框架中,写dao层的mapper接口时,是不可以进行方法的重载的,下面是截图证明:   当mapper接口中有方法的重载时,会出现异常,   这是mapper接口中定义的两个方法,进行 ...

随机推荐

  1. RID枚举工具RidEnum

    RID枚举工具RidEnum   RID(Relative ID)是域RID主机为域内用户.组或者计算机对象分配的标识.RID和域的SID就构成该对象的SID.RidEnum是一个RID循环攻击工具. ...

  2. 【R实践】时间序列分析之ARIMA模型预测___R篇

    时间序列分析之ARIMA模型预测__R篇 之前一直用SAS做ARIMA模型预测,今天尝试用了一下R,发现灵活度更高,结果输出也更直观.现在记录一下如何用R分析ARIMA模型. 1. 处理数据 1.1. ...

  3. 从cmd连接mysql数据库控制台

    在cmd中进入mysql安装目录的bin目录然后执行命令 mysql -uuser -ppassword database比如用户名为root,密码为mysql,数据库为test命令如下mysql - ...

  4. 打算安装个Ubuntu双系统,遇到了些基本概念问题(主分区、活动分区、扩展分区、逻辑分区)

    和运维的同事聊天,了解到: 1.XP系统时代(老的硬盘分区形式和分区表),最多允许建4个“主分区”,为了解决这个限制,就有了“扩展分区”的概念: 2.在“扩展分区”上,我们就可以建很多的“逻辑分区”, ...

  5. gns3 接口说明 转

    Dynamips 支持的模块首先从C7200 开始Slot 0:C7200-IO-FE <------> 支持1 个Fastethernet 接口C7200-IO-2FE <---- ...

  6. FTTB FTTC FTTH FTTO FSA

    FTTB Fiber to The Building 光纤到楼 FTTC Fiber to The Curb 光纤到路边 FTTH Fiber to The Home 光纤到家 FTTO Fiber ...

  7. CSS3:box-sizing 怪异盒模型

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. 起步X5 UI模型使用的新的JAVASCRIPT UI库 DHTMLX (简称DHX)

    最近学习新版本的起步X5,发现 UI控件有很多变化,按培训师的解释,X5平台界面设计引入了新的JAVASCRIPT UI库 DHTMLX. 参考:DHX   http://www.dhtmlx.com ...

  9. VR开发者必看:4大最为值得关注的内容平台【转】

            时间 2016-01-19 14:12:57 原文  http://www.sfw.cn/xinwen/478369.html 主题 虚拟现实 Oculus 对很多有意涉及VR行业的内 ...

  10. EL表达式介绍(1)

    1. 产生背景: 在MVC体系结构中,JSP页面只是用来显示数据,但JSP脚本中的表达式功能不够强大,它不能直接对隐式对象中某对象的属性进行显示,需要配合 scriptlet才能显示数据,很是麻烦,如 ...