白嫖容易,创作不易,若本篇配置对你产生了帮助,烦请点赞支持(关注一下更好)
依赖插件配置com.baomidou mybatis-plus-generator3.5.1 com.baomidou mybatis-plus-boot-starter3.4.3 org.apache.velocity velocity-engine-core${velocity.version}
一般建立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(); } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)