这就是——通用Mapper

简介: image.png什么是通用mapper?通用mapper 可以极大的方便开发人员进行ORM,提供极其方便的单表增删改查。可以按照自己的需要选择通用方法,还能很方便的开发自己的通用方法。
img_3359d23e2d4e5a2fa6203009cd4daf99.png
image.png

什么是通用mapper?

通用mapper 可以极大的方便开发人员进行ORM,提供极其方便的单表增删改查。

可以按照自己的需要选择通用方法,还能很方便的开发自己的通用方法。

为什么要用通用mapper?

原生Mybatis的痛点

1、mapper.xml文件里有大量的sql,当数据库表字段变动,配置文件就要修改

2、需要自己实现sql分页,select * from table where . . . limit 1,3

自己手写分页,除了传参page、pageSize,还需要返回条目总数count。

3、数据库可移植性差:如果项目更换数据库,比如oracle-->mysql,mapper.xml中的sql要重新写,因为Oracle的PLSQL 和mysql 支持的函数是不同的。

4、生成的代码量过大。

5、批量操作,批量插入,批量更新,需要自写。

快速开始

用过 Mybatis Geneator(MBG)都知道,我们可以通过配置generatorConfig.xml,指定一个数据库以及数据库表,可以使用MBG直接生成对应的Java Bean实体类(POJO)、Mapper.java接口(DAO层接口)、Mapper.xml,以及实体类的Example.java。

这就是类似于Hibernate 的逆向工程。逆向从数据库表生成了实体类。

但是这种原生的MBG生成的方式,仍然有一些不足之处。如果再配合使用通用mapper ,会有更多方便之处。下面通过对比原生mybatis生成 和 集成通用mapper后的生成,看看具体有什么区别。

代码对比(原生mybatis生成 VS 通用mapper生成)

以单表person,生成对应的Person实体类为例:

原生mybatis生成:
PersonMapper.xml、Person.java、PersonMapper.java、PersonExample.java
通用mapper生成:
PersonMapper.xml、Person.java、PersonMapper.java

原生mybatis生成的POJO中,纯代码,不包含注解。
通用mapper生成的POJO中,属性加了 (持久化)注解,与数据库字段进行匹配。

原生mybatis生成的PersonMapper.xml中,有很多sql。
通用mapper生成的PersonMapper.xml中,只有一个POJO与数据库字段的映射<resultMap>。

通用mapper生成的PersonMapper.java接口,extends MyMapper<?>。

实际上,MyMapper<?>已经提供常用的 单表CRUD方法的实现。
如果还有其他特殊CRUD需求(如多表连接查询),只需自己在PersonMapper.java接口添加方法,对应在PersonMapper.xml写sql就行了。


img_1f7bd8b5e03d696569f16b76ea993cf2.png
image2.png

原生mybatis生成的PersonExample.java类,是和具体的POJO类关联,生成POJO类时,对应的Example类也生成(生成配置中,可以选择不生成)。

PersonExample example = new PersonExample();
example.createCriteria().andEqualTo("id","1");
personMapper.selectByExample(example);

通用mapper的Example类,是通用的,并不是和具体的POJO绑定。构造时,只需要传入实体类的Class<?>类型。


img_1a1360cbb8d8d21d7b5ee812a8d5d089.png
image3.png

原生mybatis的批量插入,需要写sql,进行for循环。


img_16ce74c7165f178bae1bf1db009519a5.png
image4.png

通用mapper,天然的就支持批量操作。直接调用personMapper.insertList()


img_950d50e98870d4ca41f6d6c1b697e1d5.png
image5.png



A powerful GUI tool for MyBatisGenerator(MBG)

https://github.com/spawpaw/mybatis-generator-gui-extension

目录
相关文章
|
10月前
|
SQL XML Java
tk.Mybatis 扩展通用mapper接口
tk.Mybatis 扩展通用mapper接口
|
1月前
|
SQL XML Java
工作问题详解:tkMybatis通用mapper封装
工作问题详解:tkMybatis通用mapper封装
|
4月前
|
XML Java 数据库连接
* 完成单表操作:需要3个功能。 * 功能1:使用注解 * 功能2:通用Mapper * 功能3:使用xml
* 完成单表操作:需要3个功能。 * 功能1:使用注解 * 功能2:通用Mapper * 功能3:使用xml
94 0
|
SQL XML Java
最简单的通用Mapper的使用手册不了解一下?
通用Mapper 是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生。开发人员可以随意的按照自己的需要选择通用方法,还可以很方便的开发自己的通用方法,极其方便的使用MyBatis单表的增删改查。
145 0
最简单的通用Mapper的使用手册不了解一下?
|
SQL Java 数据库连接
spring整合通用mapper
spring整合通用mapper
86 0
spring整合通用mapper
|
Java Maven 数据库
最详细通用mapper代码生成器配置
最详细通用mapper代码生成器配置
226 0
最详细通用mapper代码生成器配置
|
安全 Java 关系型数据库
集中式整合之加入通用mapper|学习笔记
快速学习集中式整合之加入通用mapper
57 0
|
XML SQL 缓存
Data Access 之 MyBatis(八)- MyBatis 通用 Mapper(Part D)(上)
Data Access 之 MyBatis(八)- MyBatis 通用 Mapper(Part D)
Data Access 之 MyBatis(八)- MyBatis 通用 Mapper(Part D)(上)
|
存储 XML SQL
Data Access 之 MyBatis(八)- MyBatis 通用 Mapper(Part D)(下)
Data Access 之 MyBatis(八)- MyBatis 通用 Mapper(Part D)
Data Access 之 MyBatis(八)- MyBatis 通用 Mapper(Part D)(下)
|
SQL Java 数据库连接
Data Access 之 MyBatis(八)- MyBatis 通用 Mapper(Part B)(下)
Data Access 之 MyBatis(八)- MyBatis 通用 Mapper(Part B)
Data Access 之 MyBatis(八)- MyBatis 通用 Mapper(Part B)(下)

热门文章

最新文章