Mybatis Plus应用(一)简单介绍与环境搭建

MyBatisPlus
placeholder image
admin 发布于:2022-07-02 20:50:46
阅读:loading

1.基本介绍

回顾工作这么多年来,数据库的持久层用过各种多样的实现,实际上MyBatis在实际的项目应用中使用的时间并不久,但对它的实现以及应用的深度掌握也不可谓不多,但是MyBatis Plus的应用确实是空白,曾在前两年新一轮学习时接触了两款MyBatis的增强实现,最终挑选了社区更加活跃Mybatis Plus作为本站的持久层实现,主要还是借助于本站博客系统的实现来深度的掌握它。

从它的官网介绍来看,MyBatis Plus只对MyBatis做增强并未做代码改变,增加对单表的面向对象各种操作,同时又提供了多项扩展的功能点,更加易于应用于日常的业务功能实现。正如我经常在面试时会问及MyBatis Plus被应用时主要使用到了它的哪些功能点的问题(都是简历上有写MyBatis Plus),但似乎得到的答案并没用符合我的预期结果的,若有使用过可能只是简单停留在应用层面;若仔细看过官方网站则可能有更多的知识点普及;若在项目中搭建过MyBatis Plus并且在项目中广泛应用过,那能说到的知识点就更多了;比如本站共实践的知识点细节有:

(1)面向单表对象的新增/修改/删除/查询(如同Hibernate JPA等);

(2)面向对象的条件查询,支持限定查询字段范围,查询字段映射枚举;

(3)逻辑删除,自定义逻辑删除的状态值(发送的insert/update/select语句自动增加逻辑删除的条件);

(4)分页插件,只需要编写底层的查询,自动构造对应版本数据库支持的count语句(排除SQL中的order by逻辑)与实际数据查询语句;

(5)热部署Mapper.xml(定时自动刷新Mapper文件,貌似此功能被移除了),实际项目中的热部署推荐JRebel(本站有相应文章);

(6)动态表名,根据规则自动生成表名,本站操作日志的功能实现了按月份实现的动态表名(数据库绝没那么大,旨在学习应用);

(7)Id生成器的工具类;枚举工具类;等等;

(8)分页时的动态排序;

(9)官网还提供了更多的特色功能,可以移步仔细查看;

2.application.yml

#数据源配置
spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
    username: root
    password: root


#mybatis-plus配置
mybatis-plus:
  type-enums-package: cn.chendd.**.enums
  global-config:
    db-config:
      logic-delete-value: DISABLE
      logic-not-delete-value: USABLE
      select-strategy: not_empty #查询时动态sql的判定条件 != null && != ""(因为表单中提交过来的数据会为""的情况)
  mapper-locations: classpath:mybatis/mapper/**/*Mapper.xml

#日志输出级别
logging:
  config: classpath:logback-spring.xml

3.项目实践

新创建了mybatis-plus示例项目,将本站使用到的知识点进行了单独简单的实现,原项目代码功能可见https://gitee.com/88911006/chendd-examples.git项目中的mybatis-plus模块,相关的模块项目结构如下:

image.png

本项目示例使用IDEA构建,使用MySQL数据库,模块依赖Spring Boot 、lombok、JUnit、durid、MyBatis Plus3.3.1(构建博客版本时的最新版)。MyBatis Plus,也提供了有BaseMapper、IService和ServiceImpl,对于一些常规方法进行了封装,可以方便的应用于项目中,同时还提供了一些工具类也值得去应用,总之MyBatis提供的丰富的API值得去深度挖掘。

 点赞


 发表评论

当前回复:作者

 评论列表


留言区