MyBatisPlus 代码自动生成
在maven父工程 my-parent 下创建子项目 my-db
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.ung</groupId>
<artifactId>my-parent</artifactId>
<version>1.0-SNAPSHOT</version>
<modules>
<module>my-db</module>
</modules>
<!--打包方式 pom-->
<packaging>pom</packaging>
<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>
<spring-cloud-alibaba-version>2021.0.1.0</spring-cloud-alibaba-version>
<spring-cloud-version>2021.0.1</spring-cloud-version>
<spring-boot-version>2.6.3</spring-boot-version>
<junit-version>4.12</junit-version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-cloud-alibaba-version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--springCloud的依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud-version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--SpringBoot-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot-version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit-version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<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>
my-db
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>my-parent</artifactId>
<groupId>com.ung</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>my-db</artifactId>
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.1</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.4.1</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.22</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</project>
数据库 test 下新建表 t_user
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for t_user
-- ----------------------------
DROP TABLE IF EXISTS `t_user`;
CREATE TABLE `t_user` (
`id` int(3) NOT NULL AUTO_INCREMENT,
`user_name` varchar(80) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`nick_name` varchar(80) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`email` varchar(150) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`create_time` datetime(0) NULL DEFAULT NULL,
`update_time` datetime(0) NULL DEFAULT NULL,
`deleted_flag` int(2) NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 20001 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS = 1;
代码生成器
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.core.toolkit.StringPool;
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 java.util.ArrayList;
import java.util.List;
/**
* @author: wenyi
* @create: 2022/4/26
* @Description: 代码生成器
*/
public class MyBatisR {
public static void main(String[] args) {
// 1、全局配置
GlobalConfig globalConfig = new GlobalConfig();//构建全局配置对象
String projectPath = System.getProperty("user.dir");// 获取当前用户的目录
globalConfig
.setOutputDir(projectPath + "/my-db/src/main/java")// 输出文件路径
.setAuthor("ung")// 设置作者名字
.setOpen(false)// 是否打开资源管理器
.setFileOverride(true)// 是否覆盖原来生成的
.setIdType(IdType.AUTO)// 主键策略
.setBaseResultMap(true)// 生成resultMap
.setBaseColumnList(true)// XML中生成基础列
.setServiceName("%sService");// 生成的service接口名字首字母是否为I,这样设置就没有I
// 2、数据源配置
DataSourceConfig dataSourceConfig = new DataSourceConfig();// 创建数据源配置
dataSourceConfig
.setUrl("jdbc:mysql://localhost:3306/test?userSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC")
.setDriverName("com.mysql.cj.jdbc.Driver")
.setUsername("root")
.setPassword("root")
.setDbType(DbType.MYSQL);
// 3、包配置
PackageConfig packageConfig = new PackageConfig();
packageConfig
.setParent("com.ung.mydb")
.setEntity("entity")
.setController("controller")
.setService("service")
.setMapper("mapper");
// 4、策略配置
StrategyConfig strategyConfig = new StrategyConfig();
strategyConfig
.setCapitalMode(true)// 开启全局大写命名
.setInclude("t_user")// 设置要映射的表
.setNaming(NamingStrategy.underline_to_camel)// 下划线到驼峰的命名方式
.setColumnNaming(NamingStrategy.underline_to_camel)// 下划线到驼峰的命名方式
.setEntityLombokModel(true)// 是否使用lombok
.setRestControllerStyle(true)// 是否开启rest风格
.setControllerMappingHyphenStyle(true);// localhost:8080/hello_a_2
// 5、自定义配置(配置输出xml文件到resources下)
InjectionConfig cfg = new InjectionConfig() {
@Override
public void initMap() {
// to do nothing
}
};
List<FileOutConfig> focList = new ArrayList<>();
String templatePath = "/templates/mapper.xml.vm";
// 自定义配置会被优先输出
focList.add(new FileOutConfig(templatePath) {
@Override
public String outputFile(TableInfo tableInfo) {
// 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!!
return projectPath + "/my-db/src/main/resources/mapper/"
+ tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
}
});
cfg.setFileOutConfigList(focList);
// 6、整合配置
AutoGenerator autoGenerator = new AutoGenerator();// 构建代码生自动成器对象
autoGenerator
.setGlobalConfig(globalConfig)// 将全局配置放到代码生成器对象中
.setDataSource(dataSourceConfig)// 将数据源配置放到代码生成器对象中
.setPackageInfo(packageConfig)// 将包配置放到代码生成器对象中
.setStrategy(strategyConfig)// 将策略配置放到代码生成器对象中
.setCfg(cfg)// 将自定义配置放到代码生成器对象中
.execute();// 执行!
}
}
执行生成代码后,新建配置文件
application.yml
spring:
# 数据源配置
datasource:
type: com.alibaba.druid.pool.DruidDataSource
druid:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=false&serverTimezone=Asia/Shanghai
username: root
password: root
# 初始连接数
initialSize: 5
# 最小连接池数量
minIdle: 10
# 最大连接池数量
maxActive: 500
# 配置获取连接等待超时的时间
maxWait: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
minEvictableIdleTimeMillis: 300000
# 配置一个连接在池中最大生存的时间,单位是毫秒
maxEvictableIdleTimeMillis: 900000
# 配置检测连接是否有效
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
statViewServlet:
enabled: true
# 设置白名单,不填则允许所有访问
allow:
url-pattern: /druid/*
filter:
stat:
# 慢SQL记录
log-slow-sql: true
slow-sql-millis: 1000
merge-sql: true
wall:
config:
multi-statement-allow: true
# MyBatis Plus
mybatis-plus:
mapper-locations: classpath*:mapper/**/*.xml
global-config:
# 不显示banner
banner: false
# 数据库相关配置
db-config:
#主键类型 AUTO:"数据库ID自增", INPUT:"用户输入ID",ID_WORKER:"全局唯一ID (数字类型唯一ID)", UUID:"全局唯一ID UUID";
id-type: AUTO
configuration:
call-setters-on-nulls: true
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
server:
port: 8001
主启动类 MyDBApplication
package com.ung.mydb;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.transaction.annotation.EnableTransactionManagement;
/**
* @author: wenyi
* @create: 2022/9/30
* @Description:
*/
@SpringBootApplication
@EnableTransactionManagement
@MapperScan("com.ung.mydb.mapper")
public class MyDBApplication {
public static void main(String[] args) {
SpringApplication.run(MyDBApplication.class,args);
}
}
启动项目没问题或用测试类测试
MyDBApplicationTest
package com.ung.mydb;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.ung.mydb.entity.TUser;
import com.ung.mydb.service.TUserService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.ArrayList;
@SpringBootTest
public class MyDBApplicationTest {
@Autowired
TUserService service;
@Test
public void t1() {
int count = service.count();
System.out.println(count);
}
}
结果可以正常执行就成功