【机房报修管理系统】后端篇(四) 配置Mybitis、通用Mapper及Pagehelper

一、前程提要


    上一次我们完成了阿里巴巴的Druid数据源配置,这次我们来配置MyBatis、通用MapperPageHelper


二、任务详情


这一次的任务很简单,只需要导入+配置即可。

  • 通过Maven导入MyBatis通用MapperPageHelper
  • 配置MyBatis通用MapperPageHelper

三、相关介绍


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。根据我学习HibernateMyBatis的比较,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通用MapperPageHelper的配置已经完成了,由于需要在下一篇文章,配合MBG才能够运行,所以这里暂时没有能够运行的测试。如果您对次篇文章有疑问,可以在文章下方留言,谢谢您的阅读。如对【机房报修管理系统】系列文章有兴趣,可以关注或收藏我的文章,您的支持是我最大的动力,我会尽快推出下一期内容,敬请期待。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值