开发者社区> 消失er> 正文

这就是——通用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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
13923 0
阿里云服务器安全组设置内网互通的方法
虽然0.0.0.0/0使用非常方便,但是发现很多同学使用它来做内网互通,这是有安全风险的,实例有可能会在经典网络被内网IP访问到。下面介绍一下四种安全的内网互联设置方法。 购买前请先:领取阿里云幸运券,有很多优惠,可到下文中领取。
17916 0
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
18720 0
使用OpenApi弹性释放和设置云服务器ECS释放
云服务器ECS的一个重要特性就是按需创建资源。您可以在业务高峰期按需弹性的自定义规则进行资源创建,在完成业务计算的时候释放资源。本篇将提供几个Tips帮助您更加容易和自动化的完成云服务器的释放和弹性设置。
18329 0
使用SSH远程登录阿里云ECS服务器
远程连接服务器以及配置环境
11523 0
如何设置阿里云服务器安全组?阿里云安全组规则详细解说
阿里云安全组设置详细图文教程(收藏起来) 阿里云服务器安全组设置规则分享,阿里云服务器安全组如何放行端口设置教程。阿里云会要求客户设置安全组,如果不设置,阿里云会指定默认的安全组。那么,这个安全组是什么呢?顾名思义,就是为了服务器安全设置的。安全组其实就是一个虚拟的防火墙,可以让用户从端口、IP的维度来筛选对应服务器的访问者,从而形成一个云上的安全域。
16584 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
23687 0
+关注
消失er
此人小小程序员一枚~ 写点技术、写点生活。 我的简书 https://www.jianshu.com/u/dd8907cc9fa5 CSDN https://my.csdn.net/ljheee GitHub https://github.com/ljheee
59
文章
19
问答
文章排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载