Spring Cloud 将Mybatis替换为Mybatis-Plus

前言

项目之前使用的是mybatis,想引入mybatis-plus直接全部替换,工作量大不太可行,因此保留原有功能,引入mybatis-plus,因此有了以下操作。

一、Mybatis-Plus特性

Mybatis-Plus是一个 Mybatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

特性:

  • 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑
  • 损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作
  • 强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求
  • 支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错
  • 支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解决主键问题
  • 支持 ActiveRecord 模式:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进行强大的 CRUD 操作
  • 支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere )
  • 内置代码生成器:采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码,支持模板引擎,更有超多自定义配置等您来使用
  • 内置分页插件:基于 MyBatis 物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通 List 查询
  • 分页插件支持多种数据库:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多种数据库
  • 内置性能分析插件:可输出 SQL 语句以及其执行时间,建议开发测试时启用该功能,能快速揪出慢查询
  • 内置全局拦截插件:提供全表 delete 、 update 操作智能分析阻断,也可自定义拦截规则,预防误操作

二、Mybatis替换为Mybatis-Plus

将Mybatis替换为Mybatis-Plus主要有以下几个步骤:

1.引入mybatis-plus包

<!-- SpringBoot集成mybatis plus框架 -->
<dependency>
   <groupId>com.baomidou</groupId>
   <artifactId>mybatis-plus-boot-starter</artifactId>
   <version>3.4.1</version>
</dependency>

版本可以用最新版,这里引入的是3.4.1

2.修改yml文件
 

mybatis-plus:
  type-aliases-package: entityPackage                      # 所有Entity所在包
  mapper-locations:
    - classpath:mybatis/mapper/*/*.xml                      # mapper映射文件
  configuration:
    mapUnderscoreToCamelCase: true

Entity所在包改为自己的包名即可

3.mybatis版本冲突

在使用mybatis的时候引入了pagehelper分页插件,pagehelper中有引入mybatis包这里要注意跟mybatis-plus版本引入的mybatis包冲突,会导致项目报错。按上面的mybatis-plus版本这里修改到1.3.0版本 项目正常启动(ps:之前1.2.5版本时会报错)

<dependency>
   <groupId>com.github.pagehelper</groupId>
   <artifactId>pagehelper-spring-boot-starter</artifactId>
   <version>1.3.0</version>
</dependency>

4.引入代码生成器插件

<!-- mybatis-plus代码自动生成工具 -->
<dependency>
   <groupId>com.baomidou</groupId>
   <artifactId>mybatis-plus-generator</artifactId>
   <version>3.5.1</version>
</dependency>

在mybatis-plus网站有对代码生成器不同版本使用接口的介绍,这里用的3.5.1版本直接用新的代码生成器即可:

FastAutoGenerator.create("url", "username", "password")
    .globalConfig(builder -> {
        builder.author("baomidou") // 设置作者
            .enableSwagger() // 开启 swagger 模式
            .fileOverride() // 覆盖已生成文件
            .outputDir("D://"); // 指定输出目录
    })
    .packageConfig(builder -> {
        builder.parent("com.baomidou.mybatisplus.samples.generator") // 设置父包名
            .moduleName("system") // 设置父包模块名
            .pathInfo(Collections.singletonMap(OutputFile.xml, "D://")); // 设置mapperXml生成路径
    })
    .strategyConfig(builder -> {
        builder.addInclude("t_simple") // 设置需要生成的表名
            .addTablePrefix("t_", "c_"); // 设置过滤表前缀
    })
    .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
    .execute();

里面配置的生成路径和包名以及数据库修改成自己的即可。

5.引入mybatis-plus分页工具 

<!--mybatis-plus分页插件-->
<dependency>
   <groupId>com.github.jsqlparser</groupId>
   <artifactId>jsqlparser</artifactId>
   <version>3.2</version>
</dependency>

之前的pagehelper中也会引用jsqlparser包,这里要注意下版本冲突,

<dependency>
   <groupId>com.github.pagehelper</groupId>
   <artifactId>pagehelper</artifactId>
   <version>5.2.0</version>
</dependency>

pagehelper之前5.1.2版本是有冲突的,改成5.2.0冲突解决。加上插件配置代码即可:

@Configuration
public class MybatisPlusConfig {


    /**
     * 新版的插件配置
     */
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();

        PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor();
        paginationInnerInterceptor.setMaxLimit(-1L);
        // 分页插件
        mybatisPlusInterceptor.addInnerInterceptor(paginationInnerInterceptor);
        // 乐观锁插件
        mybatisPlusInterceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
        // 防止全表更新与删除插件
        mybatisPlusInterceptor.addInnerInterceptor(new BlockAttackInnerInterceptor());

        return mybatisPlusInterceptor;
    }
}

至此mybatis替换mybatis-plus完成,启动项目正常。

三、Mybatis-Plus应用

当我们新建一张表再使用代码生成器自动生成代码后,我们可以直接使用CRUD接口,无需再自己开发,省去了很多时间。另外mybatis-plus里的语法应用直接参考官网说明即可,孰能生巧,多用几次,就熟了。

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值