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();
}
}
参考自:(14条消息) MyBatis-Plus逆向工程,超详细_hg14150的博客-CSDN博客
MyBatisPlus逆向工程的更多相关文章
- springboot整合mybatis-plus逆向工程
MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发.提高效率而生.官方文档 代码生成器 AutoGenerator 是 ...
- Spring Boot整合MybatisPlus逆向工程(MySQL/PostgreSQL)
MyBatis-Plus是MyBatis的增强工具,Generator通过MyBatis-Plus快速生成Entity.Mapper.Mapper XML.Service.Controller等模块的 ...
- springboot+mybatisplus进行整合并且使用逆向工程
首先引入maven依赖:这是整合mybatisplus时,进行逆向工程时候需要引入的依赖 <!--mybaitsplus start--> <dependency> <g ...
- MybatisPlus快速入手-----逆向工程
public class getCode { @Test public void main1() { // 1.创建代码生成器 AutoGenerator mpg = new AutoGenerato ...
- springboot项目基于mybatis-plus创建逆向工程
pom 依赖 <!--web 依赖--><dependency> <groupId>org.springframework.boot</groupId> ...
- springboot集成mybatisplus
介绍: Mybatis-Plus(简称MP)是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发.提高效率而生.(摘自mybatis-plus官网)Mybati ...
- mybatis逆向工程(MyBatis Generator)
mybatis逆向工程(MyBatis Generator) 1. 什么是mybatis逆向工程 mybatis官方为了提高开发效率,提高自动对单表生成sql,包括 :mapper.xml.mappe ...
- MyBatis-Plus的简单使用
mybatis-plus也只是听过,可是终究没有使用过.于是自己花几天晚上的时间研究mybatis-plus的使用. 下面的研究也是基于其官网:http://mp.baomidou.com/guide ...
- Spring boot集成Mybatis-Plus,通用Mapper
Mybatis-Plus(简称MP)是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发.提高效率而生.(摘自mybatis-plus官网)Mybatis虽然已 ...
- springboot2.04+mybatis-plus+swagger2+CodeGenerator
@author zhangyh SpringBoot技术栈搭建个人博客[项目准备] RESTful API就是一套协议来规范多种形式的前端和同一个后台的交互方式 原型设计 事实上,我是直接先去找的原 ...
随机推荐
- ffmpeg合并时音画不同步问题及音频软编码实现记录
最近因为耳机3.5mm接口的一些干扰问题,舍弃了之前的接入方式,需要重新实现网络音频流的接入,在这个过程中遇到了一些问题,特来记录一下~ 一.网络音频流的接入 这个音频流来源各不相同,我这里是udp广 ...
- CentOS7图形化界面和命令行界面之间的转换
最近在学习Lunix操作系统下的CentOS7系统,参考了网页上大多数的资料并进行在自己的亲身实践,最终想要记录一下我在CentOS7系统中有关命令行和图形化界面之间的转换.1.查看当前的默认界面形式 ...
- BUUCTF---RSA1
RSA基础概念 rsa原理: RSA公开密钥密码体制的原理是:根据数论,寻求两个大素数比较简单,而将它们的乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥 RSA算法的具体描述如下: (1) ...
- udl(Universal Data Link)通用数据连接文件
新建文本文档 更改后缀名为.udl(注意小点) 然后打开运行 配置并测试 改回后缀名.txt(有个小点哦) 打开就是了
- [笔记]这些超级好用的html标签和css属性
1.sup.sub 上标.下标,直接看下面的例子吧 A<sub>2</sub> 4<sup>2</sup> 42 A2 2.伪类属性的love hate ...
- Composer的常用命令和关于在哪儿查看composer可用包列表的问题
1.安装: composer的安装就不用多说了,官网下载,一路next 中途貌似要让选择php.exe的所在目录. 2.常用命令: 1).配置/取消国内镜像仓库 /*配置国内镜像*/ composer ...
- P7404题解
分析题意: 题意就是让前半段序列呈上升趋势,后半段呈下降趋势. 解题方法: 考虑差分出序列的高度. xix_ixi 表示以 iii 为 kkk 的前半段需增加量. yiy_iyi 表示以 i−1i ...
- 通过引用实现php无限极分类
/** * 递归加引用实现无限极分类 * @param $items * @return array */ public function getTree2($items) { $array = ...
- Apache Flink(CVE-2020-17519)路径遍历漏洞复现_附POC和批量检测脚本
声明 本文仅用于技术交流,请勿用于非法用途 由于传播.利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任. 文章作者拥有对此文章的修改和解释权.如 ...
- C#网络编程(一)----DNS/TCP/UDP协议
简介 计算机网络是指将分布在不同地理位置的计算机系统.设备通过通信线路和设备连接起来,遵循共同的通信协议,以实现 数据传输.资源共享.协同工作 的系统 .它是现代信息技术的核心基础设施,支撑着互联网. ...