目录
二、使用步骤
1.引入依赖
代码如下(示例):
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<!-- web依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.6.4</version>
</dependency>
<!--mybatis-plus 依赖-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.1.tmp</version>
</dependency>
<!--mybatis-plus 代码生成器依赖-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.3.1.tmp</version>
</dependency>
<!--mysql 依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.25</version>
<scope>runtime</scope>
</dependency>
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.10</version>
</dependency>
<!--freemarker 依赖-->
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.31</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.3</version>
</dependency>
</dependencies>
<!--以下代码最好加上-->
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.*</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.*</include>
</includes>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<!-- <version>${maven-compiler.version}</version>-->
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
<encoding>${project.build.sourceEncoding}</encoding>
<compilerArguments>
<verbose />
<bootclasspath>${java.home}/lib/rt.jar;${java.home}/lib/jce.jar</bootclasspath>
</compilerArguments>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.6.0</version>
<!-- <executions>-->
<!-- <execution>-->
<!-- <goals>-->
<!-- <goal>java</goal>-->
<!-- </goals>-->
<!-- </execution>-->
<!-- </executions>-->
<configuration>
<classpathScope>test</classpathScope>
</configuration>
</plugin>
</plugins>
</build>
2.创建类
注意事项:
- 注意修改模块名。
- 总包名,后续生成的 Mapper,Service 等将在该包下生成子包。
- TODO:注意数据库配置。
- 填写表前缀、表字段前缀,生成代码时会去除类名或者属性名前缀。
- MySQL 数据源配置包相关配置信息(驱动com.mysql.cj.jdbc.Driver)。
代码如下:
public class CodeGenerator_mysql {
/**
* 生成代码输出路径,<strong>路径必须是绝对路径,不需要包含包名</strong>
*/
private static String projectPath = System.getProperty("user.dir");
//TODO: 1、注意修改模块名
private static String module_name = "/auto-code";
private static final String OUTPUT_DIR = projectPath+module_name+"/src/main/java";
/**
* 生成代码输出的包名
* <p>
* 2、总包名,后续生成的 Mapper,Service 等将在该包下生成子包
* </p>
*/
private static final String PACKAGE = "com.***";
/**
* TODO:3、注意数据库配置
*/
private static final String JDBC_URL = "jdbc:mysql://127.0.0.1:3306/数据库名?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true";
/**
* 数据库账户
*/
private static final String DB_USERNAME = "root";
/**
* 数据库账户密码
*/
private static final String DB_PASSWORD = "root";
/**
* 执行即可生成代码 需要添加 freemarker 依赖
* <dependency>
* <groupId>org.freemarker</groupId>
* <artifactId>freemarker</artifactId>
* <version>2.3.29</version>
* </dependency>
*/
public static void main(String[] args) {
autoGenerator().execute();
}
private static AutoGenerator autoGenerator() {
AutoGenerator autoGenerator = new AutoGenerator();
autoGenerator.setGlobalConfig(globalConfig());
autoGenerator.setDataSource(mysqlDataSourceConfig());
autoGenerator.setStrategy(strategyConfig());
autoGenerator.setPackageInfo(packageConfig());
autoGenerator.setTemplateEngine(new FreemarkerTemplateEngine());
return autoGenerator;
}
/**
* 全局配置
*
* @return {@link GlobalConfig}
*/
private static GlobalConfig globalConfig() {
GlobalConfig globalConfig = new GlobalConfig();
globalConfig.setAuthor("hunter");
// 设置代码输出位置,需要绝对路径
globalConfig.setOutputDir(OUTPUT_DIR);
// 覆盖已有的代码
globalConfig.setFileOverride(true);
// 基本表的 ResultMap
globalConfig.setBaseResultMap(true);
// 基本表字段片段
globalConfig.setBaseColumnList(true);
//设置实体类的日期类型 为java.util.date
globalConfig.setDateType(DateType.ONLY_DATE);
// 开启基于 Model 操作数据库
// globalConfig.setActiveRecord(true);
// 设置 ID 类型
// globalConfig.setIdType(IdType.ASSIGN_ID);
// 生成基本 Swagger2 文档
//globalConfig.setSwagger2(true);
// 关闭二级缓存
globalConfig.setEnableCache(false);
// 设置生成的对象名称规则,%s 表示当前的 Entity
// 数据库表映射对象名称规则
globalConfig.setEntityName("%s");
//也可以使用下面这种就是末尾会以DO结尾
// globalConfig.setEntityName("%sDO");
// Mapper 接口名称规则
globalConfig.setMapperName("%sMapper");
// Mapper XML 文件名称规则
globalConfig.setXmlName("%sMapper");
// Controller 生成规则
globalConfig.setControllerName("%sController");
// Service 接口生成名称规则
globalConfig.setServiceName("%sService");
// Service 实现类生成名称规则
globalConfig.setServiceImplName("%sServiceImpl");
return globalConfig;
}
/**
* 生成策略配置
*
* @return StrategyConfig
*/
private static StrategyConfig strategyConfig() {
StrategyConfig strategyConfig = new StrategyConfig();
// strategyConfig.setCapitalMode(false);
strategyConfig.setEntityLombokModel(true);
strategyConfig.setRestControllerStyle(true);
//表名映射实体类类名名字
strategyConfig.setNaming(NamingStrategy.underline_to_camel);
//字段映射实体类属性名字
strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel);
// TODO 4、填写表前缀、表字段前缀,生成代码时会去除类名或者属性名前缀
strategyConfig.setTablePrefix("tb_");
strategyConfig.setFieldPrefix("a_", "c_", "e_", "f_", "p_", "r_", "t_", "tf_");
return strategyConfig;
}
/**
* MySQL 5、数据源配置
*
* @return DataSourceConfig
*/
private static DataSourceConfig mysqlDataSourceConfig() {
DataSourceConfig dataSourceConfig = new DataSourceConfig();
dataSourceConfig.setDbType(DbType.MYSQL);
dataSourceConfig.setTypeConvert(new MySqlTypeConvert());
dataSourceConfig.setDriverName("com.mysql.cj.jdbc.Driver");
dataSourceConfig.setUrl(JDBC_URL);
dataSourceConfig.setUsername(DB_USERNAME);
dataSourceConfig.setPassword(DB_PASSWORD);
return dataSourceConfig;
}
/**
* 包相关配置信息
* <p>
* 配置生成代码的包信息,如生成的 Mapper 包,Service 包等
* </p>
*/
private static PackageConfig packageConfig() {
PackageConfig packageConfig = new PackageConfig();
// 设置父包
packageConfig.setParent(PACKAGE);
// Controller 包
packageConfig.setController("controller");
// 数据库表映射对象包
packageConfig.setEntity("entity");
// Mapper 接口包,含 XML 文件
packageConfig.setMapper("mapper");
// Service 接口包
packageConfig.setService("service");
// Service 接口实现类包
packageConfig.setServiceImpl("service.impl");
return packageConfig;
}