通用mapper——自定义搭配继承Mapper
前提
通用Mapper——tk.mybatis(Example)
正文
由于tk.mybatis.mapper.common.Mapper
中只有
BaseMapper<T>, ExampleMapper<T>, RowBoundsMapper<T>, Marker
这几个mapper,对于一些实际应用的场景是不够用的。通过Mapper 接口大全可以看到还有很多好用的Mapper,比如 IdsMapper<T>、MySqlMapper<T>
等,我们可以通过多继承的方式将它们统统继承过来,但是这样每个表对应的mapper接口都会有一大堆的继承,很不好看,所以将他们整合成一个mapper接口,通过继承这个接口来继承我们想使用的所有mapper接口。
1. 创建自定义的mapper接口
import tk.mybatis.mapper.annotation.RegisterMapper;
import tk.mybatis.mapper.common.IdsMapper;
import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.common.MySqlMapper;/*** 自定义的通用mapper* 除了集成基本的增删改查以外,还集成了批量添加,通过id集合批量删除、批量查询** @author √Angelの爱灬* @date 2022/4/16*/
@RegisterMapper
public interface AllMapper<T> extends Mapper<T>, MySqlMapper<T>, IdsMapper<T> {}
这里可以通过使用@tk.mybatis.mapper.annotation.RegisterMapper
注解来注册这个mapper,官网的解释是这样的:
在 4.0 以前这是一个非常重要的参数,当时只有通过 mappers 配置过的接口才能真正调用,由于很多人不注意看文档,通用 Mapper 90% 的问题都出在这个参数上。
4.0 之后,增加了一个 @RegisterMapper 注解,通用 Mapper 中提供的所有接口都有这个注解,有了该注解后,通用 Mapper 会自动解析所有的接口,如果父接口(递归向上找到的最顶层)存在标记该注解的接口,就会自动注册上。因此 4.0 后使用通用 Mapper 提供的方法时,不需要在配置这个参数。
当你自己扩展通用接口时,建议加上该注解,否则就要配置 mappers 参数。
2. 各表对应的mapper接口继承该接口
import com.study.tk.mybatis.expand.AllMapper;
import com.study.tk.mybatis.entity.Employee;/*** 通用 Mapper 代码生成器** @author mapper-generator*/
public interface EmployeeMapper extends AllMapper<Employee>
特别注意:SpringBoot启动类上的@MapperScan不能扫描到自定义的Mapper接口,不然会报错。
3. 代码生成器的配置
如果使用了代码生成器,则需要配置<property name="mappers" value="com.study.tk.mybatis.expand.AllMapper"/>
,生成的Mapper接口才会自动继承自定义的接口
<plugin type="tk.mybatis.mapper.generator.MapperPlugin"><!-- 必填属性。声明mapper接口需要继承哪些接口,多个mapper之间用“,”分隔开 --><!--<property name="mappers" value="tk.mybatis.mapper.common.Mapper"/>--><!--自己的通用接口--><property name="mappers" value="${baseMapperLocation}"/><property name="useMapperCommentGenerator" value="true"/><property name="caseSensitive" value="true"/><property name="beginningDelimiter" value="`"/><property name="endingDelimiter" value="`"/><property name="lombok" value="Data"/><property name="swagger" value="false"/>
</plugin>
通用mapper——自定义搭配继承Mapper相关推荐
- mybatis通用mapper_全网最全Mapper解析,附实操代码帮你更好理解
今天给大家介绍一位老朋友 当你第一次接触Java开发的时候,这个老朋友就和你形影不离,当你要进行ORM的时候,单表的增删改查,这位老朋友给了你极大的帮助,不知道你想到他了吗?对,这就是通用mapper ...
- 所有网站都通用的自定义弹出框alert
A.所有网站都通用的自定义弹出框.A </body> <script>var Alert = function(data){//没有数据则返回if(!data){return; ...
- 6.mybatis异常:SQL Mapper Configuration,Error parsing Mapper XML,Could not resolve type alias
6.mybatis异常:SQL Mapper Configuration,Error parsing Mapper XML,Could not resolve type alias 参考文章: (1) ...
- Mapper method ‘com.LH.mapper.EmployeeMapper.insertEmployee‘ has an unsupported return type: cla 报错
问题: Mapper method 'com.LH.mapper.EmployeeMapper.insertEmployee' has an unsupported return type: clas ...
- linux分区mapper,Linux系统/dev/mapper目录浅谈
Linux系统的一般的文件系统名称类似于/dev/sda1或/dev/hda1,但是今天在进行系统维护的时候,利用df -h 命令敲出了/dev/mapper/VolGroup-lv_root和/de ...
- java用tkmapper分组查询_tk.mybatis 中的通用Mapper自定义SQL语句
前言 今天就是想写点什么,其实还有很多没写的东西呢!笔记里边好多东西都挺好的,经验加实践总结出来的.就是都没有系统的整理,至于原因吧,有很多,最重要的一点就是我有点懒.今天写个最简单的东西,现在的开发 ...
- Beetlsql自定义生成entity,mapper,md代码
三个模板文件 mapper.btl package ${package}; import org.beetl.sql.core.annotatoin.*; import org.beetl.sql.c ...
- md文件生成Java代码_Beetlsql自定义生成entity,mapper,md代码
packagecom.github.tungss.auth;import org.beetl.sql.core.*;import org.beetl.sql.core.db.*;import org. ...
- java中example函数作用_mybatis mapper学习4-MyBatis的Mapper接口以及Example的实例函数及详解...
mybatis能够自动生成sql语句,也能够添加自定义sql语句 使用mybatis generator生成XX.java,XXExample.java,XXmapper.java,XXmapper. ...
最新文章
- Jquery判断元素是否隐藏:display属性状态值
- MyBatis 问题(持续更新)
- LiveVideoStack线上交流分享 ( 四 ) —— 面向QoE的感知视频编码
- c语言全面,最新版c语言经典习题100例(最全面).doc
- ADC 前端电路的五个设计步骤(转载)
- Python values()函数
- (73)C#里怎么样调用WIN API的函数时传送结构或指针对象
- 叉积的证明_矢量叉乘分配律的几何证明
- 51单片机控制步进电机-电路连接
- [转发]知识图谱 (Knowledge Graph) 专知 荟萃
- div + css 实现页面居中显示
- 关于Linux下通过ping/mtr 长期监控网络输出日志报告的一些笔记
- CTO应具备的知识体系
- 让“数据库审计”服务保卫你的数据库
- PhotoZoom Pro—图片“无损”放大
- 微信小程序支付流程(Java后端)
- 一些有用的定律和法则,方法
- access2003绿色中文版(转)
- 论文常用图表四:Bland-Altman图【MedCalc】
- 【华人学者风采】秦克章 中国科学院
热门文章
- Factory IO仿真工厂与西门子博途软件联动仿真
- 字节跳动核心竞争力到底是什么?
- ArcGIS教程:视域
- Python编程题:用户登录,三次机会后锁定
- Android Study Material Design 十 再探沉浸式
- Hive启动报错:java.lang.ClassNotFoundException: org.apache.tez.dag.api.TezConfiguration
- POJ 2455 dinic
- java JFreechart开发报表的实例demo下载
- 1.结束进程的正确方式
- 脱掉360奇虎的“加固保”壳后的发现与你的微信安全