写一个简单的mybatis plus插件自动生成代码的例子
pom.xml 添加配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
<!-- mybatis plus 插件--> < dependency > < groupId >com.baomidou</ groupId > < artifactId >mybatis-plus-boot-starter</ artifactId > < version >3.5.1</ version > </ dependency > <!-- mybatis plus 代码生成插件--> < dependency > < groupId >com.baomidou</ groupId > < artifactId >mybatis-plus-generator</ artifactId > < version >3.5.2</ version > </ dependency > <!-- mybatis plus代码生成模板--> < dependency > < groupId >org.apache.velocity</ groupId > < artifactId >velocity-engine-core</ artifactId > < version >2.0</ version > </ dependency > |
添加生成代码配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
package com.home.base.gen; /** * @author chenxf * @date 2022/5/5 15:00 */ import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.generator.FastAutoGenerator; import com.baomidou.mybatisplus.generator.config.OutputFile; import com.baomidou.mybatisplus.generator.fill.Column; import com.baomidou.mybatisplus.generator.fill.Property; import com.home.base.entity.BaseEntity; import com.home.base.rest.BaseRestController; import java.util.Collections; /** * @author chenxf * @date 2022/5/5 15:00 */ public class MybatisPlusGen { public static void main(String[] args){ FastAutoGenerator .create( "jdbc:mysql://127.0.0.1:3306/policy_job?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF8" , "root" , "123456" ) .globalConfig(builder -> { builder.author( "chenxf" ) // 设置作者 .fileOverride() //.enableSwagger() // 开启 swagger 模式 .outputDir( "D://gen//java//" ); // 指定输出目录 }) .packageConfig(builder -> { builder.parent( "com.home" ) // 设置父包名 .moduleName( "system" ) // 设置父包模块名 .controller( "rest" ) //controller 改名 rest .pathInfo(Collections.singletonMap(OutputFile.xml, "D://gen//resources//mapper" )); // 设置mapperXml生成路径 }) .templateConfig(builder -> { builder.entity( "/templates/entity.java" ) .controller( "/templates/controller.java" ); }) .strategyConfig(builder -> { builder.addInclude( "test_test" ) .entityBuilder().superClass(BaseEntity. class ) .disableSerialVersionUID() .enableChainModel() .enableLombok() .enableRemoveIsPrefix() .enableTableFieldAnnotation() .logicDeleteColumnName( "deleted" ) .logicDeletePropertyName( "deleteFlag" ) .addSuperEntityColumns( "id" , "create_by" , "deleted" , "create_time" , "update_by" , "update_time" ) .addTableFills( new Column( "create_time" , FieldFill.INSERT)) .addTableFills( new Property( "updateTime" , FieldFill.INSERT_UPDATE)) .idType(IdType.AUTO) .formatFileName( "%sEntity" ).build() .controllerBuilder() .superClass(BaseRestController. class ) .enableRestStyle() .formatFileName( "%sApiController" ) .build() ; // 设置需要生成的表名 // .addTablePrefix("t_", "c_"); // 设置过滤表前缀 }) // .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板 .execute(); } } |
修改内容
- entity使用了BaseEntity,添加了 id、deleted、createTime、updateTime、createBy、updateBy等公共字段
- controller使用了BaseRestController
- tips:可以直接把代码生成在对应的工作目录
把生成的代码拷至对应的工作目录
添加创建时间、修改时间自动填充配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
package com.home.component; /** * @author chenxf * @date 2022/5/6 15:57 */ import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; import lombok.extern.slf4j.Slf4j; import org.apache.ibatis.reflection.MetaObject; import org.springframework.stereotype.Component; import java.time.LocalDateTime; /** * @author chenxf * @date 2022/5/6 15:57 */ @Slf4j @Component public class BaseHandler implements MetaObjectHandler { @Override public void insertFill(MetaObject metaObject) { log.info( "start insert fill ...." ); this .fillStrategy(metaObject, "createTime" , LocalDateTime.now()); this .fillStrategy(metaObject, "updateTime" , LocalDateTime.now()); //TODO set createBy } @Override public void updateFill(MetaObject metaObject) { log.info( "start update fill ...." ); this .fillStrategy(metaObject, "updateTime" , LocalDateTime.now()); //TODO set updateBy } } |
启动 测试
访问swagger测试相应接口
http://127.0.0.1:10089/doc.html
参考资料
https://baomidou.com/pages/24112f/
到此这篇关于mybatis plus自动生成代码的示例代码的文章就介绍到这了,更多相关mybatis plus自动生成代码内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://juejin.cn/post/7094537088086835207