【Mybatis】Mapper代理开发
目的
- 解决原生方式中的硬编码
- 简化后期执行SQL
步骤
- 定义与 SQL 映射文件同名的 Mapper 接口,并且将 Mapper 接口和 SQL 映射文件放置在同一目录下
在这个步骤下,起始按照 maven 的要求,接口和映射文件应该不能放在同一个目录下的,但这里的意思是,让 maven 编译后生成的 target 目录下生成的文件夹内,Mapper 接口和 sql 映射文件出现在同一目录。
那么如何实现这个方式呢?
首先在 src 目录下创建一个专门放映射接口的包,并创建一个和 sql 映射文件同名的 Mapper 接口,如下图的com.test.mapper
包和UserMapper.java
然后在 resources 目录下创建一个文件夹,这个文件夹的名称和放了 Mapper 接口的文件夹名称一样,但是创建的方式并不是用.
来间隔,而是用\
来间隔,即:com\test\mapper
,然后就会生成一个名为com.test.mapper
的文件夹,然后将UserMapper.xml
放入其中
接着使用 maven 的 compile 命令
最后在生成的 target 目录下,就会看到 Mapper 接口和 sql 映射文件放置在同一个目录下了
- 设置 SQL 映射文件的 namespace 属性为 Mapper 接口全限定名
这个步骤就是修改 sql 映射文件namespace
的值,将namespace
设置为对应的接口的全限定名
- 在 Mapper 接口中定义方法,方法名就是 SQL 映射文件中 sql 语句的 id,并保持参数类型和返回值类型一致
在 sql 映射文件中,可以看到id
和resultType
两个属性,这个id
对应的就是 Mapper 接口中的方法名称,而resultType
对应的就是返回值类型,于是在UserMapper接口中添加如下方法:
- 修改mybatis-config.xml的路径
由于第一步的 sql 映射文件被放入了新的包中,所以这个地方需要修改以下映射的路径
- 编码
和【Mybatis】简介中快速入门介绍的差不多,这里主要修改一个地方
也就是说执行 sql 查询需要先用sqlSession获得代理对象,然后用代理对象来执行。这样就不用每次执行都填写很长一串的namespace.id
。
细节:如果Mapper接口名称和SQL映射文件名称相同,并且在同一目录下,则可以使用包扫描的方式简化SQL映射文件的加载,包扫描的配置应该写在
mybatis-config.xml
文件中,如下图所示:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏