mybatis 同时使用 XML 和注解
2024-09-01 09:07:50
引言
学过 MyBatis 框架的童靴都知道, MyBatis 支持 XML 和注解两种方式配置,如下:
使用 XML 方式配置
只写明 XML 的 resource 路径(或者URL路径)
<mappers>
<mapper resource="com/UserMapper.xml"/>
</mappers>
使用注解方式配置
只写明注解Mapper的类全路径名(这种方式只适合于只包含注解的配置)
<mappers>
<mapper class="com.UserMapper"/>
</mappers>
我们知道,以上 XML 和注解方式各有利弊;有的童靴可能会想,那能不能 XML 和注解这两种方式一起用,这样可以尽量发挥各自的长处。答案是 MyBatis 可以同时使用 XML 和注解两种方式配置。
同时使用 XML 和注解方式配置(不同映射器接口类)
<mappers>
<mapper resource="com/GameMapper.xml"/>
<mapper class="com.UserMapper"/>
</mappers>
可以看到,以上两种方式配置是针对不同的映射器接口类。那么,是否可以在同一个映射接口类中同时使用 XML 和注解方式呢?答案依然是可以。
同时使用 XML 和注解方式配置(同一映射器接口类)
<mappers>
<mapper class="com..UserMapper"/>
<mapper resource="com/UserMapper.xml"/>
</mappers>
- 这种方式一定要把类的配置写在 XML 的配置之前。
因为先解析完 mapper 之后,可以继续解析 xml,解析 xml 时如果判断 mapper 解析过之后则不会重复解析也不会抛错,但是如果先解析 xml,会向Configuration 中注册 Mapper,当之后解析 Mapper 时如果检测到有加载过则会抛出异常并终止程序创建 SqlSessionFactory。
- 不允许对一个方法既XML 配置又注解,这会报错。
因为在解析每个 sqlmap 的时候会给其生成唯一的 ID,并存入 MapperRegistry 中,这个注册中心本质上是一个 HashMap,且不允许插入已经存在的 key 值,做插入操作时如果检测到已存在同名ID就会报错终止解析。
最新文章
- (error) MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk
- 10Spring高级----青软S2SH(笔记)
- 转债---Pregel: A System for Large-Scale Graph Processing(译)
- 关于Jquery中的$.each获取各种返回类型数据的使用方法
- Windows server 修改mysql端口
- [javascript svg fill stroke stroke-width x y rect rx ry 属性讲解] svg fill stroke stroke-width rect 绘制具有圆角矩形属性讲解
- gradient 线性渐变 浏览器兼容
- Spring 框架的设计理念与设计模式分析
- ASP isPostBack
- wireshark常用的过滤命令
- win8.1系统下,点击一个窗口,【当前活动窗口】该窗口无法置顶
- SQL中的NULL值
- 关于Google指令(别提baidu)
- Object-Widgets-Quick 构造树
- html前端优化建议
- OFFICE 您正试图运行的函数包含有宏或需要宏语言支持的内容。
- spring 框架学习网站
- A1039. Course List for Student
- <;基础>; PHP 进阶之 类型转换
- Java IO如何读写文件