本文主要是介绍【Spring Boot】Mybatis Plus 3.1.X 自动生成代码配置,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
【引言】
在前面的spring boot与mybatis plus 集成的相关博客中,用的是2.x的版本,而mybatis plus已经发布3.1.x版本,所以,参照着官方文档,将集成spring boot应用,实践下代码自动生成。
【核心源码】
AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码,极大的提升了开发效率。
生成的核心方法是execute,源代码如下:
public void execute() {logger.debug("==========================准备生成文件...==========================");if (null == this.config) {this.config = new ConfigBuilder(this.packageInfo, this.dataSource, this.strategy, this.template, this.globalConfig);if (null != this.injectionConfig) {this.injectionConfig.setConfig(this.config);}}if (null == this.templateEngine) {this.templateEngine = new VelocityTemplateEngine();}this.templateEngine.init(this.pretreatmentConfigBuilder(this.config)).mkdirs().batchOutput().open();logger.debug("==========================文件生成完成!!!==========================");
}
代码生成主要配置以下几项即可:
// 数据源配置
private DataSourceConfig dataSource;
// 策略配置
private StrategyConfig strategy;
// 包配置
private PackageConfig packageInfo;
// 模板配置
private TemplateConfig template;
// 全局配置
private GlobalConfig globalConfig;
【实现步骤】
1. 添加依赖
MyBatis-Plus 从 3.0.3 之后移除了代码生成器与模板引擎的默认依赖,需要手动添加相关依赖:
<!-- 代码生成配置 -->
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>3.1.1</version>
</dependency>
<!-- spring boot 与 mybatis plus 集成starter -->
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.1.1</version>
</dependency><!-- 模板引擎 -->
<dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.28</version>
</dependency>
2. 全局配置
// 全局配置
GlobalConfig gc = new GlobalConfig();
String projectPath = System.getProperty("user.dir");
// 配置代码输出目录
gc.setOutputDir(projectPath + "/src/main/java");
// 配置作者
gc.setAuthor("huzhiting");
gc.setOpen(false);
// gc.setSwagger2(true); 实体属性 Swagger2 注解
3. 数据源配置
// 数据源配置
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl("jdbc:mysql://localhost:3306/demo?useUnicode=true&useSSL=false&characterEncoding=utf8");
// dsc.setSchemaName("public");
dsc.setDriverName("com.mysql.jdbc.Driver");
dsc.setUsername("root");
dsc.setPassword("123456");
4. 包配置
// 包配置
PackageConfig pc = new PackageConfig();
//pc.setModuleName(scanner("模块名"));
pc.setParent("com.example.mybatisplus");
mpg.setPackageInfo(pc);
上述代码中如果设置模块名,则生成的代码是按模块分的;结构如下:
src
└── main├── java│ └── com│ └── example│ └── mybatisplus│ ├── Application.java│ ├── region│ │ └── controller│ │ ├── RegionController.java│ │ └── service│ │ └── impl│ │ ├── RegionServiceImpl.java│ │ ├── IRegionService.java│ │ └── mapper│ │ ├── RegionMapper.java│ │ └── entity│ │ ├── Region.java│ ├── user│ │ └── controller│ │ ├── UserController.java│ │ └── service│ │ └── impl│ │ ├── UserServiceImpl.java│ │ ├── IUserService.java│ │ └── mapper│ │ ├── UserMapper.java│ │ └── entity│ │ ├── User.java└── resources├── application.properties└── mapper├── region│ └── RegionMapper.xml├── user│ └── UserMapper.xml
不设置则是各个模块的各层代码在同一个包下,结构如下:
src
└── main├── java│ └── com│ └── example│ └── mybatisplus│ ├── Application.java│ ├── controller│ │ └── RegionController.java│ │ └── UserController.java│ ├── service│ │ ├── impl.java│ │ └── RegionServiceImpl.java│ │ └── UserServiceImpl.java│ │ └── IRegionService.java│ │ └── IUserService.java│ ├── mapper│ │ └── RegionMapper.java│ │ └── UserMapper.java│ ├── entity│ │ └── Region.java│ │ └── User.java└── resources├── application.properties└── mapper└── RegionMapper.xml└── UserMapper.xml
通过以上包配置,便可根据以往的项目习惯自行配置项目目录结构。
5. 策略配置
// 策略配置
StrategyConfig strategy = new StrategyConfig();
// 命名规则
strategy.setNaming(NamingStrategy.underline_to_camel);
strategy.setColumnNaming(NamingStrategy.underline_to_camel);
//strategy.setSuperEntityClass("com.example.mybatisplus.common.BaseEntity");
// 实体是否使用Lombok插件
strategy.setEntityLombokModel(true);
// 控制层是否使用Rest风格
strategy.setRestControllerStyle(true);
//strategy.setSuperControllerClass("com.baomidou.ant.common.BaseController");
strategy.setInclude(scanner("表名").split(","));
strategy.setSuperEntityColumns("id");
strategy.setControllerMappingHyphenStyle(true);
strategy.setTablePrefix(pc.getModuleName() + "_");
通过以上添加依赖和相关配置的所有步骤,便可成功自动生成代码,控制台打印信息如下:
生成的代码在项目中的目录结构如下:
完整代码以上传至github,地址如下:
https://github.com/huzhiting/spring-boot-mybatisplus-3.1.x
【总结】
最近接触的新项目用的是3.1.x版本,在使用自动生成代码一套东西发现和之前自己使用2.x版本有所不同,所以想自己动手实践一把。过程中没有遇到什么错误,依照着文档很顺利完成了,也算是又一次丰富了自己的知识积累。
这篇关于【Spring Boot】Mybatis Plus 3.1.X 自动生成代码配置的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!