<!--mybatis-plus, 注意引入了此依赖就无需再引入mybatis相关依赖, 否则可能冲突--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.0</version></dependency><!--mybatis-plus代码生成器--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>3.3.0</version></dependency><!--默认模板引擎velocity, 还支持Freemarker、Beetl, 都需要引入依赖(使用其他引擎详情见官网)--><dependency><groupId>org.apache.velocity</groupId><artifactId>velocity-engine-core</artifactId><version>2.2</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-extension</artifactId><version>3.5.1</version></dependency><!-- 整合springfox-swagger、springfox-swagger-ui --><dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter</artifactId><version>3.0.0</version></dependency><!-- lombok依赖包 --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.16.10</version><scope>provided</scope></dependency>
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
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.TableFill;
import com.baomidou.mybatisplus.generator.config.po.TableInfo;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;import java.util.ArrayList;
import java.util.List;/*** 代码生成器*  作者CAN,*/
public class CodeGenerator {public static void main(String[] args) {// 代码生成器AutoGenerator mpg = new AutoGenerator();// 全局策略配置GlobalConfig gc = new GlobalConfig();String projectPath = System.getProperty("user.dir"); // 项目路径gc.setOutputDir(projectPath + "/src/main/java"); // 生成的文件路径gc.setAuthor("CAN");//作者,开发人员gc.setOpen(false); // 是否打开生成的目录gc.setFileOverride(true); // 是否覆盖已有文件, 默认falsegc.setServiceName("%sService"); // service 命名方式,自动生成的Service类前面会自动加前缀I, 这里( %s 为占位符)取消I前缀gc.setIdType(IdType.AUTO); // 指定生成的主键的ID类型gc.setDateType(DateType.ONLY_DATE); // 数据库中的时间类型对应的java类, 此设置表示Date类, 默认是java8的时间类
//        gc.setSwagger2(true); //实体属性 Swagger2 注解,需要配置Swagger2依赖mpg.setGlobalConfig(gc);// 数据源配置,通过该配置,指定需要生成代码的具体数据库DataSourceConfig dsc = new DataSourceConfig();dsc.setUrl("jdbc:mysql://127.0.0.1:3306/notbug?useUnicode=true&characterEncoding=utf-8&useSSL=false&autoReconnect=true&serverTimezone=GMT%2B8");//驱动连接的URLdsc.setDriverName("com.mysql.cj.jdbc.Driver");//驱动名称dsc.setUsername("root");//数据库连接用户名dsc.setPassword("123456");//数据库连接密码dsc.setDbType(DbType.MYSQL); // 设置数据库连接的类型mpg.setDataSource(dsc);// 包名配置,通过该配置,指定生成代码的包路径PackageConfig pc = new PackageConfig();pc.setModuleName(null); // 模块路径(子路径)pc.setParent("com.gc.demo"); // 生成的代码的父路径pc.setEntity("entity"); // 生成实体类所在的包名pc.setMapper("mapper");pc.setService("service");pc.setController("controller");mpg.setPackageInfo(pc);// 数据库表配置,通过该配置,可指定需要生成哪些表或者排除哪些表StrategyConfig strategy = new StrategyConfig();strategy.setInclude("user_role"); // 要生成的表在数据库中的名称, 每张表名以英文逗号隔开,例: ("user","system_log")strategy.setNaming(NamingStrategy.underline_to_camel); // 表名转换方式: 数据库中的下划线转成java驼峰strategy.setColumnNaming(NamingStrategy.underline_to_camel); // 列名转换方式strategy.setEntityLombokModel(true); // 自动加上lombok注解strategy.setRestControllerStyle(true); // 加上@RestController注解
//        strategy.setEntityTableFieldAnnotationEnable(true); // 为实体类的类上加@TableName, 所有字段上加注解strategy.setControllerMappingHyphenStyle(false); // RequestMapping种的驼峰是否转成用"-"连接, 默认是false
//        strategy.setTablePrefix("tp_"); // 按照表名生成实体类时去掉表名前面的"tp_"前缀strategy.setLogicDeleteFieldName("is_del"); // 数据库中表示逻辑删除的字段名// strategy.setVersionFieldName("version"); // 数据库中表示乐观锁版本号的字段名// 自动填充配置: 插入时间, 最后一次更新时间ArrayList<TableFill> tableFills = new ArrayList<>();TableFill gmtCreate = new TableFill("created_time", FieldFill.INSERT); // 插入时改变的时间纪录, created为表的字段名TableFill gmtModified = new TableFill("updated_time", FieldFill.INSERT_UPDATE); // 最后一次更新时updated表字段的时间记录tableFills.add(gmtCreate);tableFills.add(gmtModified);strategy.setTableFillList(tableFills);mpg.setStrategy(strategy);// 注入配置,通过该配置,可注入自定义参数等操作以实现个性化操作(自定义配置, 将Mapper.xml文件生成到resources目录下)InjectionConfig cfg = new InjectionConfig() {@Overridepublic void initMap() {// to do nothing}};// 如果模板引擎是 velocityString templatePath = "/templates/mapper.xml.vm";// 自定义输出配置List<FileOutConfig> focList = new ArrayList<>();// 自定义配置会被优先输出focList.add(new FileOutConfig(templatePath) {@Overridepublic String outputFile(TableInfo tableInfo) {// 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!!return projectPath + "/src/main/resources/mapper/"+ "/" + tableInfo.getEntityName()+ "Mapper"+ StringPool.DOT_XML;}});cfg.setFileOutConfigList(focList);mpg.setCfg(cfg);// 模板配置,可自定义代码生成的模板,实现个性化操作TemplateConfig templateConfig = new TemplateConfig();templateConfig.setXml(null);mpg.setTemplate(templateConfig);mpg.execute();//执行}
}

mybatis-plus代码生成器,程序员偷懒神器相关推荐

  1. 8条体面的程序员偷懒技巧

    对程序员来说,每天8小时的辛苦编码往往让大家颇为疲惫.还好,我们有8条体面的程序员偷懒技巧,让我们得以在辛勤的编码之余,体验些许放松时光. 1.将你所有的代码与SourceSafe同步  2.如果MS ...

  2. 分享一款程序员起名神器,让你从此起名不再头秃

    大家好,我是大目.最近偶然发现一款程序员起名神器,非常好用,推荐给大家. 素材发到视频号了,新号成立,欢迎点赞.收藏.关注.讨论.

  3. Sublime Text 2 - 性感无比的代码编辑器!程序员必备神器!跨平台支持Win/Mac/Linux,支持32与64位,支持各种流行编程语言的语法高亮、代码补全等...

    Sublime Text 2 - 性感无比的代码编辑器!程序员必备神器!跨平台支持Win/Mac/Linux,支持32与64位,支持各种流行编程语言的语法高亮.代码补全等-- 语法高亮.代码提示补全. ...

  4. Mybatis(黑马程序员)

    1. Mybatis基础操作 1.1 需求 需求说明: 根据资料中提供的<tlias智能学习辅助系统>页面原型及需求,完成员工管理的需求开发. 通过分析以上的页面原型和需求,我们确定了功能 ...

  5. 程序员表白神器。安卓程序员表白软件。程序员追女友利器=android+雪花效果+彩色气泡+心形花园+心形玫瑰花+相爱天数计时器

    程序员表白神器.安卓程序员表白软件.程序员追女友利器=android+雪花效果+彩色气泡+心形花园+心形玫瑰花 +相爱天数计时器. APK下载(把这个给女朋友,她一定会高兴的):http://down ...

  6. Lua sublime Text 2 - 性感无比的代码编辑器!程序员必备神器!跨平台支持Win/Mac/Linux

    sublime Text 2 - 性感无比的代码编辑器!程序员必备神器!跨平台支持Win/Mac/Linux [  编程开发,  编辑输入 -  Windows,  Mac,  Linux // 20 ...

  7. 入手了一个超大的回车键听说是程序员发泄神器的东东

    事情是这样子的: 前几天跟项目经理在实现功能上有点小争执 刚好逛淘宝刷到这个巨大的回车键,就买个回来想当出气筒发泄一下. 它长这样,号称是"程序员发泄神器" 还别说,挺好使的.按着 ...

  8. 程序员必备神器(GifCam)

    前言: 之前写过一篇序员必备神器(FastStoneCapture),这款工具可能很少有人知道,却很好用,推荐给大家.那么接下来介绍另一款和FastStoneCapture极其相似的好工具. 好像这几 ...

  9. 程序员必备神器,脑洞不是一般大!

    点击上方"Java基基",选择"设为星标" 做积极的人,而不是积极废人! 源码精品专栏 原创 | Java 2020 超神之路,很肝~ 中文详细注释的开源项目 ...

最新文章

  1. 推荐一款高端大气上档次的在线作图工具
  2. 浮点数的运算为什么更慢
  3. 快速傅里叶变化(周期信号)
  4. reactjs render props向组件内部动态传入带内容的标签
  5. 简单的docker-compose编写介绍(包含 nginx+tomcat 实例演示)
  6. pythonmysql部署_详解centos7+django+python3+mysql+阿里云部署项目全流程
  7. 检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件失败,原因是出现以下错误: 80070005 拒绝访问...
  8. ajax成功后XML 解析错误:格式不佳
  9. SpringDataJPA调用存储过程实例
  10. 最全讲解--电子电气架构演进
  11. 导论计算机论文题目,计算机类论文题目
  12. 1.13.Mark1
  13. winpython, anaconda 哪个更好?
  14. JAVA计算机毕业设计智慧茶园综合管理系统Mybatis+源码+数据库+lw文档+系统+调试部署
  15. 推荐书籍:网络流量整形与带宽控制技术
  16. php 绘制斜线,css怎么绘制斜线
  17. Python练习:贪吃蛇
  18. 以太网采集欧姆龙PLC DM数据并存入ACCESS 使用C#编写上位机程序
  19. van访谈_谷歌业务分析师访谈
  20. ROC曲线的含义以及画法

热门文章

  1. 计算机专业所属院校,全国计算机专业强的大学院校盘点
  2. 临港新片区人才住房政策办事指南
  3. 电子政务网络智慧运维方案
  4. 一站式登录授权系统(单点登录+授权管理)
  5. vue中微信分享总结
  6. BAV99 /ESD的干扰或者放电损坏电路/接口保护电路
  7. Java -- jsp 文件包含
  8. vscode如何能将输出从OUTPUT改为TERMINAL或者DebugConsole
  9. 酒至数杯 天空软件下载
  10. 开源中国码云git连接