一、前程提要
上一次我们完成了阿里巴巴的Druid
数据源配置,这次我们来配置MyBatis
、通用Mapper
,PageHelper
。
二、任务详情
这一次的任务很简单,只需要导入+配置即可。
- 通过
Maven
导入MyBatis
、通用Mapper
、PageHelper
- 配置
MyBatis
、通用Mapper
、PageHelper
三、相关介绍
1.什么是Mybatis?
MyBatis是一种Java持久化框架,在《维基百科——MyBatis》中有这么一段介绍
MyBatis是一个Java持久化框架,它通过XML描述符或注解把对象与存储过程或SQL语句关联起来。
与其他的对象关系映射框架不同,MyBatis并没有将Java对象与数据库表关联起来,而是将Java方法与SQL语句关联。MyBatis允许用户充分利用数据库的各种功能,例如存储过程、视图、各种复杂的查询以及某数据库的专有特性。如果要对遗留数据库、不规范的数据库进行操作,或者要完全控制SQL的执行,MyBatis是一个不错的选择。
与JDBC相比,MyBatis简化了相关代码:SQL语句在一行代码中就能执行。MyBatis提供了一个映射引擎,声明式的把SQL语句执行结果与对象树映射起来。通过使用一种内建的类XML表达式语言,或者使用Apache Velocity集成的插件,SQL语句可以被动态的生成。
MyBatis与Spring Framework和Google Guice集成,这使开发者免于依赖性问题。
MyBatis支持声明式数据缓存(declarative data caching)。当一条SQL语句被标记为“可缓存”后,首次执行它时从数据库获取的所有数据会被存储在一段高速缓存中,今后执行这条语句时就会从高速缓存中读取结果,而不是再次命中数据库。MyBatis提供了基于 Java HashMap 的默认缓存实现,以及用于与OSCache、Ehcache、Hazelcast和Memcached连接的默认连接器。MyBatis还提供API供其他缓存实现使用。
简单来说MyBatis简化了JDBC操作,SQL语句在一行代码中就能执行。它和对象关系映射框架(ORM)Hibernate
的不同之处在于,MyBatis并没有将Java对象与数据库表关联起来,所以说MyBatis的灵活性高于Hibernate。根据我学习Hibernate
和MyBatis
的比较,MyBatis
上手程度更加简单。
2.什么是通用Mapper?
通用Mapper是由大牛@isea533编写的针对单表进行增删改查通用方法的通用工具,以下为作者对通用Mapper的介绍《MyBatis 为什么需要通用 Mapper ?》
我个人最早用 MyBatis 时,先是完全手写,然后用上了 MyBatis 代码生成器(简称为 MBG),在使用 MBG 过程中,发现一个很麻烦的问题,如果数据库字段变化很频繁,就需要反复重新生成代码,并且由于 MBG 覆盖生成代码和追加方式生成 XML,导致每次重新生成都需要大量的比对修改。除了这个问题外,还有一个问题,仅仅基础的增删改查等方法,就已经产生了大量的 XML 内容,还没有添加一个自己手写的方法,代码可能就已经几百行了,内容多,看着比较碍事。
因为很多人都在使用 MBG,MBG 中定义了很多常用的单表方法,为了解决前面提到的问题,也为了兼容 MBG 的方法避免项目重构太多,在 MBG 的基础上结合了部分 JPA 注解产生了通用 Mapper。通用 Mapper 可以很简单的让你获取基础的单表方法,也很方便扩展通用方法。使用通用 Mapper 可以极大的提高你的工作效率。
我们在开发的过程中,少不了需要对数据表继续增删改查,以为着要在xml配置中重复写每个表的增删改查的SQL语句,这样会让开发的进度变慢,毕竟这些重复工作会让人苦恼,工作效率低下。通用Mapper就是让我们冲这些繁琐重复的工作中解放出来。
3.什么是PageHelper?
PageHelper同样是大牛@isea533写的一个分页工具。在开发中我们总需要对数据进行分页,如果使用SQL语句中的limit
能够对数据进行伪分页,但是每一次查询语句都需要这样实现伪分页,确实是有点麻烦,毕竟程序员都是不屑于做一些重复性的工作,所以PageHelper就应运而生了,此链接为Mybatis-PageHelper
的使用方法:《Mybatis-PageHelper的使用方法》
4.大牛@isea533的工具主页
注意:由于网络不稳定,可能需要科学上网
点我跳转
四、实践操作
1.在Maven导入MyBatis、通用Mapper、PageHelper
注意:如果跟着我上一篇文章《机房报修管理系统】后端篇(三) 配置阿里巴巴Druid数据源》操作的同学就不要重复导入MyBatis。
在pom.xml
中填入以下代码导入三个工具
<!--MyBatis -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<!--mapper -->
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>1.2.4</version>
</dependency>
<!--pagehelper -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.3</version>
</dependency>
2.预先创建整个项目的包
- 创建
com.repairsystem.config
用于存放配置文件 - 创建
com.repairsystem.entity
用于存放实体类 - 创建
com.repairsystem.dao
用于存放查询数据库相关的Mapper - 创建
com.repairsystem.service
用于存放各种服务 - 创建
com.repairsystem.web
用于存放项目接口 - 创建
com.repairsystem.exception
用于存放自定义异常 - 创建
com.repairsystem.utils
用于存放工具类
3.在application.properties
填写相关的配置
############################################################
#
# mybatis 配置
#
############################################################
# mybatis 配置
# 设置实体类所在位置
mybatis.type-aliases-package=com.repairsystem.entity
# 设置Mybatis XML文件的所在位置
mybatis.mapper-locations=classpath:mapper/*.xml
# 通用 Mapper 配置
# 设置通用Mapper类位置
mapper.mappers=com.repairsystem.utils.MyMapper
mapper.not-empty=false
# 设置数据库为MySQL
mapper.identity=MYSQL
# 分页插件配置
# 设置数据库方言
pagehelper.helperDialect=mysql
pagehelper.supportMethodsArguments=true
pagehelper.params=count=countSql
4.通用Mapper及Pagehelper相关使用方法
(1)通用Mapper
通用Mapper里面有大量的现成方法,如
- 查询全部信息:
selectAll()
- 按照主键查询信息:
selectByPrimaryKey()
- 通过Example自定义查询:
selectByExample()
- 查询一条信息:
selectOne()
- 插入信息:
insert()
- 按照主键更新信息:
updateByPrimaryKeySelective()
- 按照主键删除信息:
deleteByPrimaryKey()
等等还有很多现成方法,需要的话请查看通用Mapper的官网mybatis.tk,或者官方WIKI:点我跳转。
(2)PageHelper
在配置成功后只需要在调用Service层的方法时,在上面一条语句中使用此语句即可:
PageHelper.startPage(int pageNum当前页, int pageSize需要一次查询多少条);
如:
//分页
PageHelper.startPage(Integer.parseInt(page), ConstantUtils.Page.PAGESIZE);
//调用Service层查询
Administrator admin = adminService.searchAdministratorById(id);
也可以查询PageHelper的官方WIKI《如何使用PageHelper》
到这里,Mybatis
、通用Mapper
、PageHelper
的配置已经完成了,由于需要在下一篇文章,配合MBG才能够运行,所以这里暂时没有能够运行的测试。如果您对次篇文章有疑问,可以在文章下方留言,谢谢您的阅读。如对【机房报修管理系统】系列文章有兴趣,可以关注或收藏我的文章,您的支持是我最大的动力,我会尽快推出下一期内容,敬请期待。