这就是——通用Mapper
什么是通用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就行了。
原生mybatis生成的PersonExample.java类,是和具体的POJO类关联,生成POJO类时,对应的Example类也生成(生成配置中,可以选择不生成)。
PersonExample example = new PersonExample(); example.createCriteria().andEqualTo("id","1"); personMapper.selectByExample(example);
通用mapper的Example类,是通用的,并不是和具体的POJO绑定。构造时,只需要传入实体类的Class<?>类型。
原生mybatis的批量插入,需要写sql,进行for循环。
通用mapper,天然的就支持批量操作。直接调用personMapper.insertList()
A powerful GUI tool for MyBatisGenerator(MBG)
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
2018 IEEE最热门47种编程语言发榜!Python雄踞四项第一
【新智元导读】今天,IEEE Spectrum发布了最新的第五届年度编程语言交互排行榜!Python不但雄踞第一,在综合指数、用户增速、就业优势和开源语言单项中,全部霸占榜首。人生苦短,你还不用Python吗? 今天,IEEE Spectrum发布了最新的第五届年度编程语言交互排行榜! 这个榜单综合了9个来源的11个指标,对47种编程语言的流行程度进行排名。 当然了,每个程序员都有自己心目中“最好的语言”,不同的程序员有不同的需求和感兴趣的领域,因此,IEEE Spectrum没有将所有这些指标合并整成一个唯一的排名。 相反,IEEE Spectrum提供了一个交互式的应用程序,读者可以自己选择这些指标组合的权重,从而个性化定制自己关心的排行。这个排行榜包含了默认的权重,即根据典型的IEEE会员的兴趣进行调整,也提供其他一些专注于开源项目
- 下一篇
python操作mysql数据库的精美实用模块
#!/usr/bin/env python # -*- coding: utf-8 -*- import pymysql ########连接数据库############### def createConnection(): db = pymysql.Connect( host='127.0.0.1', port=3306, user='root', passwd='root', db='mydbdemo', charset='utf8' ) return db ########执行SELECT语句,返回单条数据############### def executeSelectONEback(sqlstring): try: db = createConnection() # 连接数据库 cursor = db.cursor() cursor.execute(sqlstring) dataone = cursor.fetchone() return dataone except: return False finally: db.close()# 关闭数据库连接 ########执行...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- CentOS7,CentOS8安装Elasticsearch6.8.6
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS6,CentOS7官方镜像安装Oracle11G
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- 设置Eclipse缩进为4个空格,增强代码规范
- Mario游戏-低调大师作品
- MySQL8.0.19开启GTID主从同步CentOS8
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果