项目之前使用的是mybatis,想引入mybatis-plus直接全部替换,工作量大不太可行,因此保留原有功能,引入mybatis-plus,因此有了以下操作。
Mybatis-Plus是一个 Mybatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
将Mybatis替换为Mybatis-Plus主要有以下几个步骤:
1.引入mybatis-plus包
com.baomidou mybatis-plus-boot-starter 3.4.1
版本可以用最新版,这里引入的是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版本时会报错)
com.github.pagehelper pagehelper-spring-boot-starter 1.3.0
4.引入代码生成器插件
com.baomidou mybatis-plus-generator 3.5.1
在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分页工具
com.github.jsqlparser jsqlparser 3.2
之前的pagehelper中也会引用jsqlparser包,这里要注意下版本冲突,
com.github.pagehelper pagehelper 5.2.0
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完成,启动项目正常。
当我们新建一张表再使用代码生成器自动生成代码后,我们可以直接使用CRUD接口,无需再自己开发,省去了很多时间。另外mybatis-plus里的语法应用直接参考官网说明即可,孰能生巧,多用几次,就熟了。