自动生成controller、service、entity、mapper、mapper.xml等文件,单表的增删查改无需写sql。

参考demo:
github地址

mybatis-plus 參考文献
苞米豆官方文档

依赖

<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.20</version></dependency><!--自动生成代码依赖包--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.3.1</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>3.3.1</version><scope>test</scope></dependency><!--简化code对象组件--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.1.8.RELEASE</version></dependency><!--swagger 文档--><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.7.0</version></dependency><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>2.7.0</version></dependency><!--导出swagger文档需要模板的依赖包--><dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.28</version><scope>test</scope></dependency><!--对象字段校验注解,如:@NotBlank @NotNull @NotEmpty--><dependency><groupId>jakarta.validation</groupId><artifactId>jakarta.validation-api</artifactId><version>2.0.2</version></dependency><!--jemete测试包--><dependency><groupId>org.testng</groupId><artifactId>testng</artifactId><version>6.9.10</version><scope>test</scope></dependency>

生成代码类

codeGenerator.java

package com.xxkj.myzone;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 com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;/*** Project code genertor** @author zjx*/
public class CodeGenerator {/*** Project package*/private static String projectPackage;private static String outputFilePath;private static String outputMapXmlFilePath;private static String tableNames;/*** 包配置*/private static String setMapper;private static String setEntity;private static String setService;private static String setController;/*** Database url*/private static String url;/*** Database username*/private static String username;/*** Database password*/private static String password;/*** Database driver class*/private static String driverClass;/*** 文件名后缀*/private static String fileSuffix = ".java";/*** Init database information*/static {Properties properties = new Properties();InputStream i = CodeGenerator.class.getResourceAsStream("/generatorConfig.properties");try {properties.load(i);url = properties.getProperty("generator.jdbc.url").trim();username = properties.getProperty("generator.jdbc.username").trim();password = properties.getProperty("generator.jdbc.password").trim();driverClass = properties.getProperty("generator.jdbc.driverClass").trim();projectPackage = properties.getProperty("projectPackage").trim();outputFilePath = properties.getProperty("outputFilePath").trim();outputMapXmlFilePath = properties.getProperty("outputMapXmlFilePath").trim();tableNames = properties.getProperty("tableNames").trim();setMapper = properties.getProperty("setMapper").trim();setEntity = properties.getProperty("setEntity").trim();setService = properties.getProperty("setService").trim();setController = properties.getProperty("setController").trim();} catch (IOException e) {e.printStackTrace();}}/*** main method, execute code generator*/public static void main(String[] args) {String projectPath = System.getProperty("user.dir");String javaPath = projectPackage.replaceAll("\\.", "/");// 代码生成器AutoGenerator mpg = new AutoGenerator();// 全局配置GlobalConfig gc = new GlobalConfig();gc.setAuthor("zhangjingxin");gc.setOpen(false); // 是否打开输出目录//gc.setOutputDir(projectPath + "/src/main/java"); // 输出文件目录gc.setFileOverride(true); // 是否覆盖已有文件gc.setSwagger2(true);  // 实体属性 Swagger2 注解gc.setMapperName("%sMapper");gc.setXmlName("%sMapper");gc.setServiceName("%sService");gc.setServiceImplName("%sServiceImpl");gc.setBaseResultMap(true); // mapper.xml中生成BaseResultMapgc.setActiveRecord(true);gc.setBaseColumnList(true);mpg.setGlobalConfig(gc);// 数据源配置DataSourceConfig dsc = new DataSourceConfig();dsc.setUrl(url.trim());//dsc.setSchemaName("public");dsc.setUsername(username.trim());dsc.setPassword(password.trim());dsc.setDriverName(driverClass.trim());mpg.setDataSource(dsc);// 包配置PackageConfig pc = new PackageConfig();pc.setParent(projectPackage.trim());//pc.setModuleName("model名"); 自定义包名pc.setMapper(setMapper.trim());pc.setEntity(setEntity.trim());pc.setService(setService.trim());pc.setController(setController.trim());mpg.setPackageInfo(pc);// 自定义配置InjectionConfig cfg = new InjectionConfig() {@Overridepublic void initMap() {// to do nothing}};// 自定义输出配置List<FileOutConfig> focList = new ArrayList<>();/**mapper xml文件*/// 如果模板引擎是 freemarkerString templatePath = "/templates/mapper.xml.ftl";// 自定义配置会被优先输出focList.add(new FileOutConfig(templatePath) {@Overridepublic String outputFile(TableInfo tableInfo) {// 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!!return projectPath + outputMapXmlFilePath + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;}});/**控制层*/templatePath = "/templates/controller.java.ftl";// 自定义配置会被优先输出focList.add(new FileOutConfig(templatePath) {@Overridepublic String outputFile(TableInfo tableInfo) {// 自定义输出文件名 + pc.getModuleName()String expand = projectPath + outputFilePath + "controller";String entityFile = String.format(expand + File.separator + "%s" + fileSuffix, tableInfo.getControllerName());return entityFile;}});/**业务接口层*/templatePath = "/templates/service.java.ftl";// 自定义配置会被优先输出focList.add(new FileOutConfig(templatePath) {@Overridepublic String outputFile(TableInfo tableInfo) {// 自定义输出文件名 + pc.getModuleName()String expand = projectPath + outputFilePath + "service";String entityFile = String.format(expand + File.separator + "%s" + fileSuffix, tableInfo.getServiceName());return entityFile;}});/**业务实现层*/templatePath = "/templates/serviceImpl.java.ftl";// 自定义配置会被优先输出focList.add(new FileOutConfig(templatePath) {@Overridepublic String outputFile(TableInfo tableInfo) {// 自定义输出文件名 + pc.getModuleName()String expand = projectPath + outputFilePath + "service/impl";String entityFile = String.format(expand + File.separator + "%s" + fileSuffix, tableInfo.getServiceImplName());return entityFile;}});/**数据mapper层*/templatePath = "/templates/mapper.java.ftl";// 自定义配置会被优先输出focList.add(new FileOutConfig(templatePath) {@Overridepublic String outputFile(TableInfo tableInfo) {// 自定义输出文件名 + pc.getModuleName()String expand = projectPath + outputFilePath + "mapper";String entityFile = String.format(expand + File.separator + "%s" + fileSuffix, tableInfo.getMapperName());return entityFile;}});/**数据entity层*/templatePath = "/templates/entity.java.ftl";// 自定义配置会优先输出focList.add(new FileOutConfig(templatePath) {@Overridepublic String outputFile(TableInfo tableInfo) {// 自定义输出文件名 + pc.getModuleName()String expand = projectPath + outputFilePath + "model/entity";String entityFile = String.format(expand + File.separator + "%s" + fileSuffix, tableInfo.getEntityName());return entityFile;}});/*cfg.setFileOutConfigList(new IFileCreate() {@Overridepublic boolean isCreate(ConfigBuilder configBuilder, FileType fileType, String filePath) {// 判断自定义文件夹是否需要创建checkDir("调用默认方法创建目录");return false;}});*/cfg.setFileOutConfigList(focList);mpg.setCfg(cfg);// 配置模板TemplateConfig templateConfig = new TemplateConfig();templateConfig.setController(null);templateConfig.setXml(null);mpg.setTemplate(templateConfig);// 策略配置StrategyConfig strategy = new StrategyConfig();strategy.setNaming(NamingStrategy.underline_to_camel);strategy.setColumnNaming(NamingStrategy.underline_to_camel);//strategy.setSuperEntityClass("");strategy.setEntityLombokModel(true);strategy.setRestControllerStyle(true);//strategy.setExclude("");// 表名strategy.setInclude(tableNames.split(","));strategy.setControllerMappingHyphenStyle(true);/**表前缀,要自动去除添加*///strategy.setTablePrefix("t_");mpg.setStrategy(strategy);mpg.setTemplateEngine(new FreemarkerTemplateEngine());mpg.execute();}
}

配置文件
generatorConfig.properties

generator.jdbc.driverClass=com.mysql.cj.jdbc.Driver
generator.jdbc.url=jdbc:mysql://123.56.26.20:3308/resume?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
generator.jdbc.username=root
generator.jdbc.password=rootprojectPackage=com.xxkj.swaggerdemo
outputFilePath=/swagger-demo/src/main/java/com/xxkj/swaggerdemo/
outputMapXmlFilePath=/swagger-demo/src/main/resources/mapper/# 表名 多表之间逗号分隔
tableNames=my_test# 包配置
setMapper=mapper
setEntity=model.entity
setService=service
setController=controller

yml新增配置

# mybatis config
mybatis-plus:type-aliases-package: com.xxkj.myzone.model.entitymapper-locations: classpath*:mapper/*Mapper.xml# 这个配置会将执行的sql打印出来configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

启动类新增注解(mapper接口对应路径)

@MapperScan("com.xxkj.swaggerdemo.mapper")

mybatis-plus 參考文献
苞米豆官方文档

基于mybatis-plus的代码自动生成-完美版相关推荐

  1. Mybatis最入门---代码自动生成(generatorConfig.xml配置)

    [一步是咫尺,一步即天涯] 经过前文的叙述,各位看官是不是已经被Mybatis的强大功能给折服了呢?本文我们将介绍一个能够极大提升我们开发效率的插件:即代码自动生成.这里的代码自动生成包括,与数据库一 ...

  2. lin通信ldf文件解析_基于LIN协议的代码自动生成系统及方法_2014108531085_说明书_专利查询_专利网_钻瓜专利网...

    技术领域 本发明属于汽车电子LIN网络通讯领域,公开了一种利用LDF文件自动生成LIN通讯软件代码的方法. 背景技术 目前汽车电子产品的软件开发逐渐向模块化.标准化.集成化.自动化发展.LIN通讯模块 ...

  3. matlab找不到bma_g代码,基于矢量图形的G代码自动生成软件路径优化算法的研究

    在数控雕刻技术中,数控编程是设计人员与执行人员联系的桥梁.传统的方法是由技术员从图纸中提取零件信息,结合加工工艺要求,根据数控加工程序的标准手工编制加工程序,速度较慢且精度较低.随着数控技术的发展,市 ...

  4. pyqt漂亮gui界面模板_一种基于模板的C代码自动生成方法

    在做C代码项目的时候,我们期望做到代码的高复用,高复用意味着代码的高配置性,即通过简单的配置修改达到复用代码的目的.如果代码高复用,支持灵活的配置,那么完全可以在上边做一个更简单的配置工具,用来修改代 ...

  5. java生成iso9660工具_基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(TableGo v7.0.0版)...

    TableGo_20210212 v7.0.0 正式版发布,此次版本更新如下: 1.新增对DB2数据库的支持 2.新增按字段生成文件,支持把字段.JSON.XML数据转换成任何代码 3.新增大量新的自 ...

  6. freemarker mysql 生成bean_基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(v6.6.6版)...

    TableGo_20191026 v6.6.6 正式发布,此次版本更新如下: 1.新增通过自定义模板生成Word文档的功能,可以使用FreeMarker模板生成自定义格式的数据库文档. 2.新增 Sw ...

  7. 基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(v6.9.0版)

    TableGo_20200520 v6.9.0 正式版发布,此次版本更新如下:           1.新增对JDK9及以上版本Java环境的支持           2.生成JavaBean更名为生 ...

  8. 基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(TableGo v7.4.0版)

    TableGo_20210921 v7.4.0 正式版发布,此次版本累计更新如下:           1.新增企业或个人的简单定制版本,为企业和个人提供软实力的增值           2.新增导入 ...

  9. mysql javabean 工具_基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(v6.9.0版)...

    TableGo_20200520 v6.9.0 正式版发布,此次版本更新如下: 1.新增对JDK9及以上版本Java环境的支持 2.生成JavaBean更名为生成数据模型并且提供了C#.C++.Gol ...

最新文章

  1. RxJava 过滤操作符 distinct 和 distinctUntilChanged
  2. 动力节点Java培训告诉你Java线程的多功能用法
  3. unef螺纹_小螺纹大学问,11种螺纹类型,你都使用过吗,了解它的使用方法吗
  4. OAuth 2.0攻击方法及案例总结
  5. 【转】转 Linux调优方案,sysctl.conf的设置
  6. LeetCode算法题-Jewels and Stones(Java实现)
  7. 华为模拟器eNSP1
  8. Bootstrap CSS 编码规范之Class 命名规范
  9. Non-ASCII character \xe6 in file
  10. Deepin+win7双系统启动项问题解决
  11. python上方菜单栏不见了如何恢复_word菜单栏不见了,如何恢复
  12. 哞力无法挡 516争抢最后一群斐讯“天天牛”
  13. 剪辑视频的方法有哪些
  14. 再谈OT算法的协同文档制作的底层基础架构记录
  15. matlab实现牛顿下山法(下山过程)
  16. 关于学术文献推荐系统的调研报告
  17. 3G入门教程--通讯基础
  18. 机器人之爱:为什么人与机器可以陷入浪漫的爱情?
  19. 如何写出网站策划方案
  20. 解决基于SpringMVC+MYSQL注解@Transaction事务无效问题

热门文章

  1. 陶晶chi液晶屏01,stc15代码
  2. 超高频RFID的优势及重要地位
  3. 通过Web安全工具Burp suite找出网站中的XSS漏洞实战(二) 1
  4. 在Windows下安装和配置Node.js环境
  5. Java基础系列二:Java泛型
  6. 初学docker第一周
  7. 根据数据库表结构生成Excel表设计——工具介绍
  8. WebUpload 视频上传,支持多视频上传
  9. FS4060是一款具有升降压模式的充电管理芯片支持多串锂电池充电筋膜枪充电IC
  10. 【转】50款免费的好软件