MybatisPlus常用依赖、配置、插件方式
作者:Sucker_苏
这篇文章主要介绍了MybatisPlus常用依赖、配置、插件方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
MybatisPlus常用依赖、配置、插件
依赖
<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.5.1</version> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.3</version> </dependency> <!-- velocity 模板引擎, Mybatis Plus 代码生成器需要 --> <dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity-engine-core</artifactId> <version>${velocity.version}</version> </dependency>
插件配置
- 一般建立config包,新建一个配置类
- 一般添加插件直接使用
@Configuration @MapperScan(value = "com.sucker.eduservice.mapper") public class EduConfig { //mybatis-plus插件配置 @Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.H2));//分页插件 interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());//乐观锁插件 return interceptor; } }
自动填充
- 首先在实体类上需要添加注解
@TableField(fill = FieldFill.INSERT)
- 若需要给id添加值,则加上注解
@TableId(type = IdType.ASSIGN_ID)
此处例子ID是在数据库中自增因此没有使用该注解
@Data @AllArgsConstructor @NoArgsConstructor public class User { private Long id; private String name; private Integer age; private String email; //数据库中是下划线,实体类要驼峰 @TableField(fill = FieldFill.INSERT) private Date createTime; @TableField(fill = FieldFill.INSERT_UPDATE)//自动填充注解 private Date updateTime; @Version @TableField(fill = FieldFill.INSERT) private Integer version;//版本号 @TableLogic private Integer deleted; }
在新建handler包,新建MyMetaObjectHandler类,需要实现MetaObjectHandler
在其中进行自动填充配置
@Component public class MyMetaObjectHandler implements MetaObjectHandler { @Override public void insertFill(MetaObject metaObject) { this.setFieldValByName("createTime", new Date(), metaObject); this.setFieldValByName("updateTime", new Date(), metaObject); this.setFieldValByName("version", 1, metaObject); } @Override public void updateFill(MetaObject metaObject) { this.setFieldValByName("updateTime", new Date(), metaObject); } }
代码生成器配置
一般只写在test目录中,因为只使用一次
package com.sucker.demo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.generator.FastAutoGenerator; import com.baomidou.mybatisplus.generator.config.OutputFile; import com.baomidou.mybatisplus.generator.config.rules.DateType; import com.baomidou.mybatisplus.generator.engine.VelocityTemplateEngine; import org.junit.Test; import java.util.Collections; public class CodeGenerator { // 演示例子,执行 main 方法控制台输入模块表名回车自动生成对应项目目录中 @Test public void test(){ FastAutoGenerator.create("jdbc:mysql://localhost:3306/guli_edu?useUnicode=true&characterEncoding=utf8", "root", "123456") .globalConfig(builder -> { builder.author("sucker") // 设置作者 .enableSwagger() // 开启 swagger 模式 .dateType(DateType.ONLY_DATE) .fileOverride() .outputDir("D:\\JavaCode\\gulimall\\guli_parent1\\service\\service_edu"+"\\src\\main\\java"); // 指定输出目录 }) .packageConfig(builder -> { builder.parent("com.sucker") // 设置父包名 .moduleName("eduservice") // 设置父包模块名 .controller("controller") .entity("entity") .service("service") .mapper("mapper") .xml("mapper") .pathInfo(Collections.singletonMap(OutputFile.mapperXml, "D:\\JavaCode\\gulimall\\guli_parent1\\service\\service_edu\\src\\main\\resources\\mapper")); // 设置mapperXml生成路径 }) .strategyConfig(builder -> { builder.addInclude("edu_teacher") // 设置需要生成的表名 .addTablePrefix("t_", "c_") // 设置过滤表前缀 .serviceBuilder() .formatServiceFileName("%sService") .entityBuilder() .enableLombok() .logicDeleteColumnName("is_deleted") .enableTableFieldAnnotation() .controllerBuilder() .formatFileName("%sController") .enableRestStyle() .mapperBuilder() .enableBaseResultMap() .superClass(BaseMapper.class) .formatMapperFileName("%sMapper") .enableMapperAnnotation() .formatXmlFileName("%sMapper"); }) .templateEngine(new VelocityTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板 .execute(); } }
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。