MybatisPlus MySQL代码自动生成(包含swagger注释)
- 建立数据库、数据表
- 创建springboot mybatis maven项目
- maven依赖pom.xml(并不是全都需要,里面有些不需要的你就去掉就好了,每一个上面的注释是下面这个依赖是干嘛的)
<!-- spring security-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<!-- gprc启动框架 -->
<dependency>
<groupId>net.devh</groupId>
<artifactId>grpc-spring-boot-starter</artifactId>
<version>2.11.0.RELEASE</version>
</dependency>
<!-- jdk8+需要 -->
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.0</version>
</dependency>
<!-- spring aop -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<!-- lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<!-- mysql-connector-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--数据库连接jdbc依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!-- mybatis的orm插件 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.1.1</version>
</dependency>
<!--spring web-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- springboot devtools-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<!-- spring configuration processor-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<!--springboot test-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--springboot elasticsearch-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
<!--协程Quasar-->
<dependency>
<groupId>co.paralleluniverse</groupId>
<artifactId>quasar-core</artifactId>
<version>0.7.10</version>
<classifier>jdk8</classifier>
</dependency>
<!-- 七牛云OSS JavaSDK-->
<dependency>
<groupId>com.qiniu</groupId>
<artifactId>qiniu-java-sdk</artifactId>
<version>7.4.0</version>
</dependency>
<!-- -->
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
<version>1.66</version>
</dependency>
<!-- Swagger2 访问/swagger-ui.html#/-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.8.0</version>
</dependency>
<!--spring fox 其实就是spring-swagger2-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.8.0</version>
</dependency>
<!--引入ui包 bootstrap ui美化的 访问/doc.html-->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>swagger-bootstrap-ui</artifactId>
<version>1.9.3</version>
</dependency>
<!-- fast json-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>
<!-- redis-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!--文件上传和下载-->
<!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.4</version>
</dependency>
<!--阿里druid数据库链接依赖-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.9</version>
</dependency>
<!-- mybatis-plus-generator-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.1.1</version>
</dependency>
<!-- mybatis-plus-generator-->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.1</version>
</dependency>
<!-- mybatis-plus-generator-->
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.28</version>
</dependency>
<!--grpc-->
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>3.14.0</version>
</dependency>
<!--grpc-->
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-all</artifactId>
<version>1.35.0</version>
</dependency>
<!-- http client-->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.4</version>
</dependency>
<!-- http client-->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>4.4</version>
</dependency>
- 代码生成器(修改代码里的配置,然后运行生成代码)
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
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.converts.MySqlTypeConvert;
import com.baomidou.mybatisplus.generator.config.po.TableInfo;
import com.baomidou.mybatisplus.generator.config.querys.MySqlQuery;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.VelocityTemplateEngine;
import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
/**
* @author humorchen
* @Description: 代码生成器
*/
public class CodeGenerator {
/**
* <p>
* 读取控制台内容
* </p>
*/
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.isNotEmpty(ipt)) {
return ipt;
}
}
throw new MybatisPlusException("请输入正确的" + tip + "!");
}
public static void main(String[] args) {
// Scanner scanner = new Scanner(System.in);
AutoGenerator generator = new AutoGenerator();
// 全局变量配置
GlobalConfig gc = new GlobalConfig();
String projectPath = System.getProperty("user.dir"); //当前项目
gc.setOutputDir(projectPath + "/src/main/java"); // 输出路径
gc.setFileOverride(true); // 默认 false ,是否覆盖已生成文件
gc.setOpen(false); //默认true ,是否打开输出目录
gc.setEnableCache(false); // 默认false,是否开启二级缓存
gc.setAuthor("humorchen"); // 作者
gc.setSwagger2(true); //默认false
gc.setBaseResultMap(true); // 默认false
// gc.setDateType(DateType.TIME_PACK); // 时间策略 默认TIME_PACK
gc.setBaseColumnList(true); //默认false 和basemodel相似
// gc.setEntityName("%s");
// gc.setControllerName("%sController");
// gc.setServiceName("I%sService");
// gc.setServiceImplName("%sServiceImpl");
// gc.setMapperName("I%sMapper");
// gc.setXmlName("%sMapper");
gc.setIdType(IdType.AUTO); // 指定生成的主键类型
generator.setGlobalConfig(gc);
// 数据源配置
DataSourceConfig dc = new DataSourceConfig();
dc.setDbQuery(new MySqlQuery()); // 数据库信息查询 //默认mysql
dc.setDbType(DbType.MYSQL);// 数据库类型
dc.setTypeConvert(new MySqlTypeConvert()); //类型转换 默认mysql
dc.setUrl("jdbc:mysql://192.168.0.198:3306/imdb?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=false");
dc.setDriverName("com.mysql.cj.jdbc.Driver");
dc.setUsername("root");
dc.setPassword("root");
generator.setDataSource(dc);
// 包配置
PackageConfig pc = new PackageConfig();
pc.setParent("com.newfly.im");//代码生成到哪个包下面
// pc.setModuleName(""); //此处是所属模块名称
pc.setEntity("bean"); //默认entity,controller,service,service.impl,mapper,mapper.xml
generator.setPackageInfo(pc);
// 自定义配置
InjectionConfig cfg = new InjectionConfig() {
@Override
public void initMap() {
// to do nothing
}
};
/**
* 将xml生成到resource下面
*/
// String templatePath = "/templates/mapper.xml.vm"; // Velocity模板
// 自定义输出配置
// 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);
generator.setCfg(cfg);
// 配置模板
// TemplateConfig tc = new TemplateConfig();
// templates/entity.java 模板路径配置,默认在templates目录下,.vm 后缀不用加
// tc.setEntity("templates/entity.java");//使用自定义模板生成实体类
// tc.setXml("");
// generator.setTemplate(tc);
// 数据库表配置
StrategyConfig sc = new StrategyConfig();
sc.setCapitalMode(false); //是否大写命名 默认false
sc.setSkipView(true); //是否跳过试图 默认false
sc.setNaming(NamingStrategy.underline_to_camel);// 表映射 驼峰命名
sc.setColumnNaming(NamingStrategy.underline_to_camel); // 字段映射 驼峰
sc.setEntityLombokModel(true); //是否使用lombak 默认为false
sc.setRestControllerStyle(true); // 默认false
sc.setEntitySerialVersionUID(true); //默认true
sc.setEntityColumnConstant(true); //默认false 将mysql字段名生成静态变量
// sc.setInclude(scanner("表名,多个英文逗号分割").split(",")); //表名,用,隔开 需要生产
// sc.setExclude(""); // 不需要生成 二选一
sc.setEntityTableFieldAnnotationEnable(true); // 默认false 注释
sc.setControllerMappingHyphenStyle(false); //默认false
sc.setTablePrefix(new String[]{"t_"});// 此处可以修改为您的表前缀
// sc.setLogicDeleteFieldName("status"); // 逻辑删除字段名称
generator.setStrategy(sc);
// 模板引擎
generator.setTemplateEngine(new VelocityTemplateEngine());
generator.execute();
}
}
- application.yml
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.0.198:3306/imdb?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC&rewriteBatchedStatements=true
username: root
password: root
- 生成后的代码,比如bean
本文来自博客园,作者:HumorChen99,转载请注明原文链接:https://www.cnblogs.com/HumorChen/p/18039647
分类:
Java
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~