基于注解的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. POJ 1486 Sorting Slides(二分图匹配)

    [题目链接] http://poj.org/problem?id=1486 [题目大意] 给出每张幻灯片的上下左右坐标,每张幻灯片的页码一定标在这张幻灯片上, 现在问你有没有办法唯一鉴别出一些幻灯片 ...

  2. 【可持久化Trie】模板

    总算找到个能看懂的了,orz Lavender. #define INF 2147483647 #define N 100001 #define MAXBIT 31 int root[N],ch[N* ...

  3. FCL研究-LINQ-System.Linq Enumerable

    .net 里面集合操作极为方便,尤其是实现了IEnumerable接口的集合,一直在使用,系统的研究一下集合的操作也是极好的. 类型 操作符名称 投影操作符 Select,SelectMany 限制操 ...

  4. linux-磁盘目录使用情况-df/du

    1.  df -h   查看磁盘使用情况 2. du -h --max-depth=1  查看各文件夹大小 3.  sudo du -k --max-depth=1 | sort -k 1 -n -r ...

  5. 全局对象Application的使用,以及如何在任何地方得到Application全局对象

    Application和Activity,Service一样是android框架的一个系统组件,当android程序启动时系统会创建一个application对象,用来存储系统的一些信息.通常我们是不 ...

  6. SQL CTE 递归分割以逗号分隔的字符串

    )) INSERT INTO @t SELECT 'AAA,BBB,CCC' SELECT * FROM @t ;WITH mycte AS ( ,mend,num FROM @t UNION ALL ...

  7. Bitcoin 比特币, LTC(litecoin)莱特币,

    1.挖掘机   http://asicme.com/index 2.官方:  http://bitcoin.org/zh_CN/ =============== 1\  最好的比特币资讯网站   ht ...

  8. IP windows相关

    nbtstat: 假设 我们  通过net view 获取了 局域网内一些计算机名 如上标红的计算机名称 如何 才能获取计算机的ip呢? 接下来使用  nbtstat -a  列出远程机器的名称表: ...

  9. 鸟哥的linux私房菜服务器架设篇学习记录之进修专区与架设服务器的准备工作

  10. 好未来AI Lab 思考下面的问题

    好未来AI Lab和科赛联合举办的TAIL CAMP——AI实战训练营 图像识别: 卷积层是所有CNN网络中必不可少的模块,请解释为什么3X3的卷积是最为常用的卷积核大小?小尺寸卷积核(1x1)和大尺 ...