场景

MyBaitsPlus3.x与2.x是不一样的。这里使用3.0.1版本。

官方文档

https://mp.baomidou.com/guide/generator.html#%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B

这里在IDEA上的SpringBoot项目中进行代码生成测试。

实现

添加依赖

添加 代码生成器 依赖

<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>3.2.0</version>
</dependency>

注意:MyBatis-Plus 从 3.0.3 之后移除了代码生成器与模板引擎的默认依赖,需要手动添加相关依赖

<!-- 模板引擎velocity start--><dependency><groupId>org.apache.velocity</groupId><artifactId>velocity-engine-core</artifactId><version>2.0</version></dependency><!-- 模板引擎velocity end--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.0.1</version></dependency>

模板引擎

MyBatis-Plus 支持 Velocity(默认)、Freemarker、Beetl,用户可以选择自己熟悉的模板引擎。

注意!如果您选择了非默认引擎,需要在 AutoGenerator 中 设置模板引擎。

AutoGenerator generator = new AutoGenerator();// set freemarker engine
generator.setTemplateEngine(new FreemarkerTemplateEngine());// set beetl engine
generator.setTemplateEngine(new BeetlTemplateEngine());// set custom engine (reference class is your custom engine class)
generator.setTemplateEngine(new CustomTemplateEngine());

编写代码

在test下新建单元测试类Generatortest.java

全局配置

 //全局配置GlobalConfig config = new GlobalConfig();//设置是否支持AR模式config.setActiveRecord(true)//设置生成代码的作者.setAuthor("badaoliumangqizhi")//设置输出代码的位置.setOutputDir("f:output")//.setEnableCache(false)// XML 二级缓存//.setBaseResultMap(true)// XML ResultMap//.setBaseColumnList(true)// XML columList//.setKotlin(true) 是否生成 kotlin 代码//设置是否覆盖原来的代码.setFileOverride(true);

数据源配置

//数据库连接urlString dbUrl = "jdbc:sqlserver://;DatabaseName=";//数据源配置DataSourceConfig dataSourceConfig = new DataSourceConfig();//数据库类型 枚举dataSourceConfig.setDbType(DbType.SQL_SERVER)//设置url.setUrl(dbUrl)//设置用户名.setUsername("")//设置密码.setPassword("")//设置数据库驱动.setDriverName("com.microsoft.sqlserver.jdbc.SQLServerDriver")// 自定义数据库表字段类型转换【可选】.setTypeConvert(new MySqlTypeConvert() {@Overridepublic DbColumnType processTypeConvert(GlobalConfig globalConfig, String fieldType) {System.out.println("转换类型:" + fieldType);//tinyint转换成Booleanif ( fieldType.toLowerCase().contains( "tinyint" ) ) {return DbColumnType.BOOLEAN;}//将数据库中datetime转换成dateif ( fieldType.toLowerCase().contains( "datetime" ) ) {return DbColumnType.DATE;}return (DbColumnType) super.processTypeConvert(globalConfig, fieldType);}});

策略配置

//策略配置StrategyConfig strategyConfig = new StrategyConfig();strategyConfig//全局大写命名是否开启.setCapitalMode(true)//【实体】是否为lombok模型.setEntityLombokModel(true)//表名生成策略  下划线转驼峰.setNaming(NamingStrategy.underline_to_camel)//自动填充设置//.setTableFillList(tableFillList)//修改替换成你需要的表名,多个表名传数组.setInclude("wms_receive_order");

集成注入配置

//注入全局设置new AutoGenerator().setGlobalConfig(config)//注入数据源配置.setDataSource(dataSourceConfig)//注入策略配置.setStrategy(strategyConfig)//设置包名信息.setPackageInfo(new PackageConfig()//提取公共父级包名.setParent("com.badao.bus.sys")//设置controller信息.setController("controller")//设置实体类信息.setEntity("entity"))//设置自定义模板.setTemplate(new TemplateConfig()//.setXml(null)//指定自定义模板路径, 位置:/resources/templates/entity2.java.ftl(或者是.vm)//注意不要带上.ftl(或者是.vm), 会根据使用的模板引擎自动识别// 自定义模板配置,模板可以参考源码 /mybatis-plus/src/main/resources/template 使用 copy// 至您项目 src/main/resources/template 目录下,模板名称也可自定义如下配置:// .setController("...");// .setEntity("...");// .setMapper("...");// .setXml("...");// .setService("...");.setServiceImpl("templates/serviceImpl.java"))//开始执行代码生成.execute();}

完整生成器代码

package com.ws.test.generator;import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;
import com.baomidou.mybatisplus.generator.config.po.TableFill;
import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;
import org.junit.Test;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;import java.util.ArrayList;
import java.util.List;/*** Created by badado on 2019/4/25.*/
public class Generatortest {@Testpublic void generateTest(){//全局配置GlobalConfig config = new GlobalConfig();//设置是否支持AR模式config.setActiveRecord(true)//设置生成代码的作者.setAuthor("badaoliumangqizhi")//设置输出代码的位置.setOutputDir("f:output")//.setEnableCache(false)// XML 二级缓存//.setBaseResultMap(true)// XML ResultMap//.setBaseColumnList(true)// XML columList//.setKotlin(true) 是否生成 kotlin 代码//设置是否覆盖原来的代码.setFileOverride(true);//******************************数据源配置***************************************//数据库连接urlString dbUrl = "jdbc:sqlserver://;DatabaseName=";//数据源配置DataSourceConfig dataSourceConfig = new DataSourceConfig();//数据库类型 枚举dataSourceConfig.setDbType(DbType.SQL_SERVER)//设置url.setUrl(dbUrl)//设置用户名.setUsername("")//设置密码.setPassword("")//设置数据库驱动.setDriverName("com.microsoft.sqlserver.jdbc.SQLServerDriver")// 自定义数据库表字段类型转换【可选】.setTypeConvert(new MySqlTypeConvert() {@Overridepublic DbColumnType processTypeConvert(GlobalConfig globalConfig, String fieldType) {System.out.println("转换类型:" + fieldType);//tinyint转换成Booleanif ( fieldType.toLowerCase().contains( "tinyint" ) ) {return DbColumnType.BOOLEAN;}//将数据库中datetime转换成dateif ( fieldType.toLowerCase().contains( "datetime" ) ) {return DbColumnType.DATE;}return (DbColumnType) super.processTypeConvert(globalConfig, fieldType);}});//******************************策略配置******************************************************// 自定义需要填充的字段 数据库中的字段List<TableFill> tableFillList = new ArrayList<>();tableFillList.add(new TableFill("gmt_modified", FieldFill.INSERT_UPDATE));tableFillList.add(new TableFill("modifier_id", FieldFill.INSERT_UPDATE));tableFillList.add(new TableFill("creator_id", FieldFill.INSERT));tableFillList.add(new TableFill("gmt_creat", FieldFill.INSERT));tableFillList.add(new TableFill("available_flag", FieldFill.INSERT));tableFillList.add(new TableFill("deleted_flag", FieldFill.INSERT));tableFillList.add(new TableFill("sync_flag", FieldFill.INSERT));//策略配置StrategyConfig strategyConfig = new StrategyConfig();strategyConfig//全局大写命名是否开启.setCapitalMode(true)//【实体】是否为lombok模型.setEntityLombokModel(true)//表名生成策略  下划线转驼峰.setNaming(NamingStrategy.underline_to_camel)//自动填充设置.setTableFillList(tableFillList)//修改替换成你需要的表名,多个表名传数组.setInclude("wms_receive_order");//集成注入设置//注入全局设置new AutoGenerator().setGlobalConfig(config)//注入数据源配置.setDataSource(dataSourceConfig)//注入策略配置.setStrategy(strategyConfig)//设置包名信息.setPackageInfo(new PackageConfig()//提取公共父级包名.setParent("com.badao.bus.sys")//设置controller信息.setController("controller")//设置实体类信息.setEntity("entity"))//设置自定义模板.setTemplate(new TemplateConfig()//.setXml(null)//指定自定义模板路径, 位置:/resources/templates/entity2.java.ftl(或者是.vm)//注意不要带上.ftl(或者是.vm), 会根据使用的模板引擎自动识别// 自定义模板配置,模板可以参考源码 /mybatis-plus/src/main/resources/template 使用 copy// 至您项目 src/main/resources/template 目录下,模板名称也可自定义如下配置:// .setController("...");// .setEntity("...");// .setMapper("...");// .setXml("...");// .setService("...");.setServiceImpl("templates/serviceImpl.java"))//开始执行代码生成.execute();}
}

效果

运行测试

生成成功后会自动弹出生成代码的目录

MyBatisPlus3.x中使用代码生成器(全注释)相关推荐

  1. 【Qt】QtCreator中自动补全注释

    1.简述 在QtCreator中编辑代码,可以自动补全函数注释,供doxygen使用并生成文档.doxygen的使用方法,后续会写一个详细的博文. 2.使用方法 在函数前分别输入"/**&q ...

  2. MyBatisPLus3.x中代码生成器自定义数据库表字段类型转换

    场景 MyBatisPlus3.x中使用代码生成器(全注释): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/89518466 数 ...

  3. python反向缩进_在Pycharm中对代码进行注释和缩进的方法详解

    在Pycharm中对代码进行注释和缩进的方法详解 一.注释 1. #单行注释 2. """ 多行注释 """ 3. pycharm多行注释快 ...

  4. 如何在Eclipse中如何自动添加注释和自定义注释风格

    背景简介 丰富的注释和良好的代码规范,对于代码的阅读性和可维护性起着至关重要的作用.几乎每个公司对这的要求还是比较严格的,往往会形成自己的一套编码规范.但是再实施过程中,如果全靠手动完成,不仅效率低下 ...

  5. IDEA中多行注释及取消注释的快捷键分享

    这篇文章主要介绍了IDEA中多行注释及取消注释的快捷键分享,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧 1.一次性添加多行注释的快捷键 首先选中要注释区域,然后 ctrl+/ 这个 ...

  6. android中布局全屏,怎么在Android 应用中实现一个全屏与非全屏功能

    怎么在Android 应用中实现一个全屏与非全屏功能 发布时间:2020-12-04 17:31:45 来源:亿速云 阅读:135 作者:Leah 怎么在Android 应用中实现一个全屏与非全屏功能 ...

  7. DevExpress 中 在做全选的全消功能的时候 加快效率

    DevExpress 中 在做全选的全消功能的时候 加快效率 在做 DevExpress 中对增加的选择 Check列 控制全选的全消时通过以下代码红色字代码效率会有明显的提升: private vo ...

  8. 如何在 IntelliJ IDEA 中快速生成 JavaDoc 注释模板

    如何在 IntelliJ IDEA 中快速生成 JavaDoc 注释模板 此博客存在上一个版本,如果读者对笔者以前版本的博客依然感兴趣,可以访问此链接:https://blog.csdn.net/wa ...

  9. quartz mysql索引_分布式系统中的定时任务全解(二)

    在实际项目中,通常需要用到定时任务(定时作业),spring框架提供了很好的实现. 1.  下载spring-quartz插件包 这里默认当前系统中是集成了spring框架的基本功能的.去网上下载sp ...

最新文章

  1. 创建,修改Table格式
  2. 设置tomcat使用指定的jdk版本
  3. 万维网报务器与浏览器各有什么功能,浏览器是如何获得服务器上的信息的,第3章因特网的应用.ppt...
  4. Intent对象详解(一)
  5. DoubleCheck双重检查实战及原理解析
  6. jsoup的介绍使用(转)
  7. diy nas配置推荐2019_在Windows Server 2019上配置NAS的方法
  8. OpenShift 4 - DevSecOps Workshop (1) - 安装 Workshop 环境
  9. 美股涨跌幅限制是多少?
  10. 迷宫最短路径-货郎担问题的解决思路
  11. 智慧城市是什么?为什么要建智慧城市?
  12. 卤煮花生米的制作过程(高压锅版)
  13. 2021-03-23美团面试
  14. 线程池java submit,详解线程池execute和submit用法
  15. swift 中使用 Alamofire+Moya+ObjectMapper,并做了一些功能封装
  16. 云学python (第二章用编程改造世界·小练习)《vamei-从Python开始学编程》
  17. Maven的jar包无法导入/彻底解决unable to find valid certification path to requested target
  18. Linux 下du命令详解及代码实现
  19. 声音内容识别 linux,语音支付,银行的声纹识别与声纹鉴定
  20. 活动图的制作非常简单,只需5个步骤即可完成精美互动图!

热门文章

  1. 你真的弄明白了吗?Java并发之AQS详解
  2. mavne的依赖、继承、聚合
  3. iis 运行时错误_17个常见的Python运行时错误
  4. 排序算法时间复杂度、空间复杂度、稳定性整理
  5. task文件服务器无法输入,求助大神,win10的输入法无法使用,去开task sche
  6. 如何用php获取网页表格,PHP获取网页上任意表格中内容的通用程序的制作
  7. python 随机取列表值 重复_python怎么随机取列表的值
  8. fcm模糊聚类matlab实例_一文学会使用MATLAB将仿真、试验数据可视化附带源程序
  9. re匹配正则字符串中的起始和结束元字符的使用方法
  10. Auto_ml与TPOT的区别