SpringBoot整合MyBatis Plus代码生成器之代码分析
代码生成类详解(每行都有注释)
package com.sxgxo.auto;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
/**
* @author 颂梓枫
* @since JDK 1.8
* ClassName: TestAuto
* date: 2020/12/15 12:39
* Description:
* //1.全局配置
* //2.数据源配置
* //3.数据库表策略配置
* //4.包名策略配置
* //5.整合配置
*/
public class TestAuto {
public static void main(String[] args) {
//1.全局配置
GlobalConfig gc = new GlobalConfig();
String propertyPath = System.getProperty("user.dir");
gc//.setActiveRecord(true) //开启AR模式。生成model
.setAuthor("颂梓枫") // 作者
.setOutputDir(propertyPath+"/src/main/java") //生成文件所在的目录,user.dir表示当前目录
.setFileOverride(true) //文件覆盖,true表示第二次生成的文件会把第一次的覆盖掉
.setIdType(IdType.AUTO) //主键策略,自增
.setDateType(DateType.ONLY_DATE)//日期类型
.setServiceName("%sService") //IEmpService 意思是把I去掉
.setOpen(false) //生成的文件不打开资源管理器。(默认设置是打开的)
.setBaseResultMap(true) //生成mapper.xml文件中的BaseResultMap
.setBaseColumnList(true);//生成SQL片段 基本查询列
//2.数据源配置
DataSourceConfig dsc = new DataSourceConfig();
dsc.setDbType(DbType.MYSQL)//数据库类型
.setDriverName("com.mysql.cj.jdbc.Driver")
.setUrl("jdbc:mysql://localhost:3306/test?serverTimezone=UTC")
.setUsername("root")
.setPassword("root");
//3.数据库表策略配置
StrategyConfig sc = new StrategyConfig();
sc.setCapitalMode(true)//全局大写命名
.setNaming(NamingStrategy.underline_to_camel)//数据库表映射到实体类的命名策略,开启驼峰命名
.setTablePrefix("tb_")//不生成表名前缀
.setInclude("tb"+"_\\w*")//想生成的那张表 "tb"+"_\\w*"可以生成数据库的所有表
//.setEntityLombokModel(true)
.setEntityTableFieldAnnotationEnable(true)
.setLogicDeleteFieldName("is_deleted") //逻辑删除字段名
.setEntityBooleanColumnRemoveIsPrefix(true)//去除逻辑删除字段名的前缀 _is
.setEnableSqlFilter(false); //mp3.4.1版本,需要设置这个条件,才可以使用生成所有表的功能
//4.包名策略配置
PackageConfig pc= new PackageConfig();
pc.setParent("com.sxgxo.auto")
.setMapper("dao")
.setController("controller")
.setEntity("model")
.setService("service")
.setXml("mapper");
//5.整合配置
AutoGenerator ag = new AutoGenerator();
ag.setGlobalConfig(gc)
.setDataSource(dsc)
.setStrategy(sc)
.setPackageInfo(pc);
//6.执行
ag.execute();
}
}
pom文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.1</version>
<relativePath/>
<!-- lookup parent from repository -->
</parent>
<groupId>com.sxgxo</groupId>
<artifactId>auto</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>auto</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.1</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.4.1</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.2</version>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.30</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.7</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.7</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</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>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>