MyBatis-Plus 代码生成器(三)

MyBatis-Plus 代码生成器示例

代码生成器

AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenertor 可以快速生成 Entity、Mapper、Mapper XML、Servie、Controller 等各个模块的代码,极大的提高了开发效率。

基本配置

globalConfig

全局策略配置

  • 类型:GlobalConfig
  • 默认值:null

dataSource

数据源配置,通过该配置,指定需要生成代码的具体数据库

  • 类型:DataSourceConfig
  • 默认值:null

strategy

策略配置,通过该配置,指定需要生成哪些表或者排除哪些表

  • 类型:StrategyConfig
  • 默认值:null

packageInfo

包名配置,通过该配置,指定生成代码的包路径

  • 类型:PackageConfig
  • 默认值:null

injectionConfig

注入配置,通过该配置,可注入自定义参数等操作以实现个性化操作

  • 类型:InjectionConfig
  • 默认值:null

fileOutConfigList

文件配置,通过该配置,可自定义 xxMapper.xml 文件输出目录

  • 类型:FileOutConfig
  • 默认值:null

template

模板配置,可自定义代码生成的模板,实现个性化操作

  • 类型:TemplateConfig
  • 默认值:null

构建项目

脚本初始化

sys_user.sql

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
-- ----------------------------
-- Table structure for sys_user
-- ----------------------------
DROP TABLE IF EXISTS `sys_user`;
CREATE TABLE `sys_user` (
`id` bigint(20) NOT NULL COMMENT '用户ID',
`name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户名',
`age` int(3) NULL DEFAULT NULL COMMENT '用户年龄',
`type` int(1) NULL DEFAULT 0 COMMENT '0、禁用 1、正常, 如果使用tinyint(1),mysql连接没加tinyInt1isBit=false,默认mysql驱动会把值转成boolean',
`ctime` datetime(0) NULL DEFAULT NULL COMMENT '自定义填充的创建时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '系统用户表' ROW_FORMAT = Compact;

-- ----------------------------
-- Records of sys_user
-- ----------------------------
INSERT INTO `sys_user` VALUES (784972358981328902, 'Tom', 24, 1, '2017-06-25 20:53:33');
INSERT INTO `sys_user` VALUES (784972358981328903, 'Jammy', 21, 1, '2017-06-25 20:53:37');

添加依赖

pom.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependencies>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.0.1</version>
</dependency>
</dependencies>

代码生成器测试类

xxTest.java

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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
package com.ray.mybatisplusstudygenerator;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.InjectionConfig;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.po.TableInfo;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import java.util.ArrayList;
import java.util.Collections;

/**
* Mybatis-Plus 代码生成器
*/
@RunWith(SpringRunner.class)
@SpringBootTest
public class MybatisPlusStudyGeneratorApplicationTests{

/**
* 数据库配置
*/
private String url = "jdbc:mysql://localhost:3306/mybatis-plus?characterEncoding=utf8";
private String driver = "com.mysql.jdbc.Driver";
private String username = "root";
private String password = "root";

/**
* 开发人员
*/
private String author = "Ray";

/**
* 文件生成的目录 F:\codeGen\
*/
private String javaHome = "F:/codeGen/code";
private String resourcesHome = "F:/codeGen/code/resources/mapper/";

/**
* 生成的包名和类名
*/
private String packageName = this.getClass().getPackage().getName(); // com.ray.mybatisplusstudygenerator
private String[] tableNames = {"sys_user"};

/**
* 设置包名 如mapper 可以改为 dao
*/
private String mapperName = "mapper";

/**
* 运行代码生成器
*/
@Test
public void generatorCode(){
/**
* 调用代码生成器
*/
generatorByTables(packageName, tableNames);
}

/**
* 配置代码生成器
*/
private void generatorByTables(String packageName, String... tableNames){

/**
* 代码生成器
*/
AutoGenerator mpg = new AutoGenerator().setGlobalConfig(
// 全局配置
new GlobalConfig()
.setActiveRecord(false) // 需要ActiveRecord特性 请改为true
.setAuthor(author) // 开发人员
.setOutputDir(javaHome) // 文件生成的目录
.setFileOverride(true) // 是否覆盖文件
.setEnableCache(false) // XML 二级缓存
.setBaseColumnList(true) // XML ColumnList
.setBaseResultMap(true) // XML ResultMap
.setServiceName("%sService") //自定义文件命名,%s 会自动填充表实体属性
).setDataSource(
// 数据源配置
new DataSourceConfig()
.setDbType(DbType.MYSQL) // 数据库类型
.setUrl(url)
.setDriverName(driver)
.setUsername(username)
.setPassword(password)
).setStrategy(
// 策略配置
new StrategyConfig()
.setCapitalMode(true) // 全局大写命名
.setEntityLombokModel(false) // Lombok 简化代码
.setNaming(NamingStrategy.underline_to_camel) // 表名生成策略
.setInclude(tableNames) // 修改成需要的表名,多个表名可传数组
).setPackageInfo(
// 包设置
new PackageConfig()
.setParent(packageName) // 自定义包路径
.setMapper(mapperName) // 数据层包名
).setCfg(
// 注入自定义配置
new InjectionConfig() {
@Override
public void initMap() {

}
}.setFileOutConfigList(Collections.singletonList(new FileOutConfig(
"/templates/mapper.xml.vm") { // 这段没有效果,但又不能没有这段
// 自定义 xxMapper.xml 文件输出目录
@Override
public String outputFile(TableInfo tableInfo) {
return resourcesHome + tableInfo.getEntityName() + "Mapper.xml";
}
}))
).setTemplate(
// 关闭默认 xml 生成,调整生成至根目录
new TemplateConfig().setXml(null)
);
mpg.execute();
}

}

运行结果

-------------- 本文结束  感谢您的阅读 --------------
0%