MyBatisPlus逆向工程
MyBatisPlus逆向工程
一、创建Springboot工程
二、引入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>
<groupId>com.mao</groupId>
<artifactId>TestMybatisPlus</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>TestMybatisPlus</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<spring-boot.version>2.6.5</spring-boot.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!-- springmvc -->
<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.2</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-core</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.31</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.3</version>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.4.1</version>
<configuration>
<mainClass>com.mao.testmybatisplus.TestMybatisPlusApplication</mainClass>
</configuration>
<executions>
<execution>
<id>repackage</id>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
三、配置数据库连接(application.properties)
# 应用名称
spring.application.name=TestMybatisPlus
#设置开发环境
spring.profiles.active=dev
#数据库连接配置
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/maomao?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.username=mao
spring.datasource.password=123
#日志配置
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
#配置逻辑删除
mybatis-plus.global-config.db-config.logic-delete-value=1
mybatis-plus.global-config.db-config.logic-not-delete-value=0
四、配置插件注册(MyBatisPlusConfig.java)
package com.mao.testmybatisplus.config;
import com.baomidou.mybatisplus.core.injector.ISqlInjector;
import com.baomidou.mybatisplus.extension.injector.LogicSqlInjector;
import com.baomidou.mybatisplus.extension.plugins.OptimisticLockerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import com.baomidou.mybatisplus.extension.plugins.PerformanceInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Profile;
public class MyBatisPlusConfig {
//注册乐观锁插件
@Bean
public OptimisticLockerInterceptor optimisticLockerInterceptor() {
return new OptimisticLockerInterceptor();
}
//注册分页插件
@Bean
public PaginationInterceptor paginationInterceptor() {
PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
// 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求 默认false
// paginationInterceptor.setOverflow(false);
// 设置最大单页限制数量,默认 500 条,-1 不受限制
// paginationInterceptor.setLimit(500);
// 开启 count 的 join 优化,只针对部分 left join
// paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true));
return paginationInterceptor;
}
//注册逻辑删除插件
@Bean
public ISqlInjector sqlInjector(){
return new LogicSqlInjector();
}
//注册性能插件
@Bean
// 设置 dev test 环境开启
@Profile({"dev","test"})
public PerformanceInterceptor performanceInterceptor() {
PerformanceInterceptor performanceInterceptor = new PerformanceInterceptor();
performanceInterceptor.setMaxTime(50);
//ms,超过此处设置的ms则sql不执行
//performanceInterceptor.setFormat(true);
return performanceInterceptor;
}
}
五、配置自动生成类(CodeGenerator.java)
1、控制台输入
public class CodeGenerator {
//0、读取控制台内容
public static String scanner(String tip) {
Scanner scanner = new Scanner(System.in);
StringBuilder help = new StringBuilder();
help.append("请输入" + tip + ":");
System.out.println(help.toString());
if (scanner.hasNext()) {
String ipt = scanner.next();
if (StringUtils.isNotBlank(ipt)) {
return ipt;
}
}
throw new MybatisPlusException("请输入正确的" + tip + "!");
}
public static void main(String[] args) {
//1、获取代码生成器对象
AutoGenerator mpg = new AutoGenerator();
//2、全局配置
GlobalConfig gc = new GlobalConfig();
//获取用户目录
String projectPath = System.getProperty("user.dir");
//代码生成路径
gc.setOutputDir(projectPath + "/src/main/java");
//作者信息
gc.setAuthor("黄果");
gc.setOpen(false);
//生成ID类型
gc.setIdType(IdType.AUTO);
gc.setDateType(DateType.ONLY_DATE);
gc.setFileOverride(true);
//去掉Servce前缀
gc.setServiceImplName("%sService");
mpg.setGlobalConfig(gc);
//3、数据源配置
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl("jdbc:mysql://localhost:3306/school?useUnicode=true&useSSL=false&characterEncoding=utf8");
dsc.setDriverName("com.mysql.jdbc.Driver");
dsc.setUsername("root");
dsc.setPassword("123456");
dsc.setDbType(DbType.MYSQL);
mpg.setDataSource(dsc);
//4、包配置
PackageConfig pc = new PackageConfig();
//设置模块名 com.iflytek.project
//pc.setModuleName("project"); //没有第0步时此代码必写
pc.setModuleName(scanner("模块名")); //第0步省略时此代码可删
//5、设置工程名
pc.setParent("com.iflytek");
//设置包名
pc.setEntity("entity");
pc.setMapper("mapper");
pc.setService("service");
pc.setController("controller");
mpg.setPackageInfo(pc);
//6、自定义配置
InjectionConfig cfg = new InjectionConfig() {
@Override
public void initMap() {
// to do nothing
}
};
//7、如果模板引擎是 freemarker
String templatePath = "/templates/mapper.xml.ftl";
//8、自定义输出配置
List<FileOutConfig> focList = new ArrayList<>();
// 自定义配置会被优先输出
focList.add(new FileOutConfig(templatePath) {
@Override
public String outputFile(TableInfo tableInfo) {
// 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!!
return projectPath + "/src/main/resources/mapper/" + pc.getModuleName()
+ "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
}
});
cfg.setFileOutConfigList(focList);
mpg.setCfg(cfg);
//9、配置模板
TemplateConfig templateConfig = new TemplateConfig();
templateConfig.setXml(null);
mpg.setTemplate(templateConfig);
//10、策略配置
StrategyConfig strategy = new StrategyConfig();
//数据库表名优先映射,配置
strategy.setInclude("person");
//下划线转驼峰命名的策略
strategy.setNaming(NamingStrategy.underline_to_camel);
//数据库命名规则
strategy.setColumnNaming(NamingStrategy.underline_to_camel);
//自动生成lombok注解
strategy.setEntityLombokModel(true);
//自动添加控制结构
strategy.setRestControllerStyle(true);
//自动添加逻辑删除策略
strategy.setLogicDeleteFieldName("deleted");
//11、设置自动填充策略
TableFill gmtCreatereate = new TableFill("gmt_create", FieldFill.INSERT);
//设置自动更新时间策略
TableFill gmtModifiedodified = new TableFill("gmt_modified", FieldFill.UPDATE);
//获取自动填充对象
ArrayList<TableFill> tableFills = new ArrayList<>();
//添加填充策略
tableFills.add(gmtCreatereate);
tableFills.add(gmtModifiedodified);
strategy.setTableFillList(tableFills);
//12、设置乐观锁策略
strategy.setVersionFieldName("version");
//设置Restful风格
strategy.setRestControllerStyle(true);
//设置连接请求 http://localhost:8080/hello_id_2
strategy.setControllerMappingHyphenStyle(true);
//第0步省略,此行代码可删
strategy.setInclude(scanner("表名,多个英文逗号分割").split(","));
mpg.setStrategy(strategy);
mpg.execute();
}
}
2、无控制台输入
package com.mao;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.FieldFill;
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.po.TableFill;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import java.util.ArrayList;
public class CodeGenerator {
public static void main(String[] args) {
//1、获取代码生成器对象
AutoGenerator mpg = new AutoGenerator();
//2、全局配置
GlobalConfig gc = new GlobalConfig();
//获取用户目录
String projectPath = System.getProperty("user.dir");
//代码生成路径
gc.setOutputDir(projectPath + "/src/main/java");
//作者信息
gc.setAuthor("毛毛");
gc.setOpen(false);
//生成ID类型
gc.setIdType(IdType.AUTO);
gc.setDateType(DateType.ONLY_DATE);
gc.setFileOverride(true);
//去掉Servce前缀
gc.setServiceImplName("%sService");
mpg.setGlobalConfig(gc);
//3、数据源配置
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl("jdbc:mysql://127.0.0.1:3306/maomao?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=false");
dsc.setDriverName("com.mysql.cj.jdbc.Driver");
dsc.setUsername("mao");
dsc.setPassword("123");
dsc.setDbType(DbType.MYSQL);
mpg.setDataSource(dsc);
//4、包配置
PackageConfig pc = new PackageConfig();
//设置模块名 com.mao.project
pc.setModuleName("project"); //没有第0步时此代码必写
//5、设置工程名
pc.setParent("com.mao");
//设置包名
pc.setEntity("pojo");
pc.setMapper("mapper");
pc.setService("service");
pc.setController("controller");
mpg.setPackageInfo(pc);
//6、策略配置
StrategyConfig strategy = new StrategyConfig();
//数据库表名优先映射,配置
strategy.setInclude("user","userinfo","student","tb_video_info");
//下划线转驼峰命名的策略
strategy.setNaming(NamingStrategy.underline_to_camel);
//数据库命名规则
strategy.setColumnNaming(NamingStrategy.underline_to_camel);
//自动生成lombok注解
strategy.setEntityLombokModel(true);
//自动添加控制结构
strategy.setRestControllerStyle(true);
//自动添加逻辑删除策略
strategy.setLogicDeleteFieldName("deleted");
//7、设置自动填充策略
TableFill gmtCreatereate = new TableFill("gmt_create", FieldFill.INSERT);
//设置自动更新时间策略
TableFill gmtModifiedodified = new TableFill("gmt_modified", FieldFill.UPDATE);
//获取自动填充对象
ArrayList<TableFill> tableFills = new ArrayList<>();
//添加填充策略
tableFills.add(gmtCreatereate);
tableFills.add(gmtModifiedodified);
strategy.setTableFillList(tableFills);
//8、设置乐观锁策略
strategy.setVersionFieldName("version");
//设置Restful风格
strategy.setRestControllerStyle(true);
//设置连接请求 http://localhost:8080/hello_id_2
strategy.setControllerMappingHyphenStyle(true);
mpg.setStrategy(strategy);
mpg.execute();
}
}
本文来自博客园,作者:没有烦恼的猫猫,转载请注明原文链接:https://www.cnblogs.com/maomao777/p/16494644.html
分类:
springboot
标签:
mybatisplus
, springboot
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~