mybatis-plus代码生成器,程序员偷懒神器
<!--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代码生成器,程序员偷懒神器相关推荐
- 8条体面的程序员偷懒技巧
对程序员来说,每天8小时的辛苦编码往往让大家颇为疲惫.还好,我们有8条体面的程序员偷懒技巧,让我们得以在辛勤的编码之余,体验些许放松时光. 1.将你所有的代码与SourceSafe同步 2.如果MS ...
- 分享一款程序员起名神器,让你从此起名不再头秃
大家好,我是大目.最近偶然发现一款程序员起名神器,非常好用,推荐给大家. 素材发到视频号了,新号成立,欢迎点赞.收藏.关注.讨论.
- Sublime Text 2 - 性感无比的代码编辑器!程序员必备神器!跨平台支持Win/Mac/Linux,支持32与64位,支持各种流行编程语言的语法高亮、代码补全等...
Sublime Text 2 - 性感无比的代码编辑器!程序员必备神器!跨平台支持Win/Mac/Linux,支持32与64位,支持各种流行编程语言的语法高亮.代码补全等-- 语法高亮.代码提示补全. ...
- Mybatis(黑马程序员)
1. Mybatis基础操作 1.1 需求 需求说明: 根据资料中提供的<tlias智能学习辅助系统>页面原型及需求,完成员工管理的需求开发. 通过分析以上的页面原型和需求,我们确定了功能 ...
- 程序员表白神器。安卓程序员表白软件。程序员追女友利器=android+雪花效果+彩色气泡+心形花园+心形玫瑰花+相爱天数计时器
程序员表白神器.安卓程序员表白软件.程序员追女友利器=android+雪花效果+彩色气泡+心形花园+心形玫瑰花 +相爱天数计时器. APK下载(把这个给女朋友,她一定会高兴的):http://down ...
- Lua sublime Text 2 - 性感无比的代码编辑器!程序员必备神器!跨平台支持Win/Mac/Linux
sublime Text 2 - 性感无比的代码编辑器!程序员必备神器!跨平台支持Win/Mac/Linux [ 编程开发, 编辑输入 - Windows, Mac, Linux // 20 ...
- 入手了一个超大的回车键听说是程序员发泄神器的东东
事情是这样子的: 前几天跟项目经理在实现功能上有点小争执 刚好逛淘宝刷到这个巨大的回车键,就买个回来想当出气筒发泄一下. 它长这样,号称是"程序员发泄神器" 还别说,挺好使的.按着 ...
- 程序员必备神器(GifCam)
前言: 之前写过一篇序员必备神器(FastStoneCapture),这款工具可能很少有人知道,却很好用,推荐给大家.那么接下来介绍另一款和FastStoneCapture极其相似的好工具. 好像这几 ...
- 程序员必备神器,脑洞不是一般大!
点击上方"Java基基",选择"设为星标" 做积极的人,而不是积极废人! 源码精品专栏 原创 | Java 2020 超神之路,很肝~ 中文详细注释的开源项目 ...
最新文章
- 推荐一款高端大气上档次的在线作图工具
- 浮点数的运算为什么更慢
- 快速傅里叶变化(周期信号)
- reactjs render props向组件内部动态传入带内容的标签
- 简单的docker-compose编写介绍(包含 nginx+tomcat 实例演示)
- pythonmysql部署_详解centos7+django+python3+mysql+阿里云部署项目全流程
- 检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件失败,原因是出现以下错误: 80070005 拒绝访问...
- ajax成功后XML 解析错误:格式不佳
- SpringDataJPA调用存储过程实例
- 最全讲解--电子电气架构演进
- 导论计算机论文题目,计算机类论文题目
- 1.13.Mark1
- winpython, anaconda 哪个更好?
- JAVA计算机毕业设计智慧茶园综合管理系统Mybatis+源码+数据库+lw文档+系统+调试部署
- 推荐书籍:网络流量整形与带宽控制技术
- php 绘制斜线,css怎么绘制斜线
- Python练习:贪吃蛇
- 以太网采集欧姆龙PLC DM数据并存入ACCESS 使用C#编写上位机程序
- van访谈_谷歌业务分析师访谈
- ROC曲线的含义以及画法