mybaitis快速生成_关于Mybatis-Plus代码生成器快速使用心得
1.使用背景
偶然情况下,同事介绍Mybatis-Plus有一个代码生成的功能,能够通过 AutoGenerator 快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码,极大的提升了开发效率。告别繁琐而无趣的重复性工作,极大提高工作效率。
对于该功能的使用,整理一份快速使用心得。
2.快速入门
2.1 准备工作
建议打开官方网站
2.2 导入依赖
com.baomidou
mybatis-plus-boot-starter
3.4.0
com.baomidou
mybatis-plus-generator
3.4.0
org.freemarker
freemarker
2.3.30
2.3 添加文件
// 演示例子,执行 main 方法控制台输入模块表名回车自动生成对应项目目录中
public class CodeGenerator {/**
*
* 读取控制台内容
*
*/
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.isNotBlank(ipt)) {
return ipt;
}
}
throw new MybatisPlusException("请输入正确的" + tip + "!");
}
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("jobob");
gc.setOpen(false);
// gc.setSwagger2(true); 实体属性 Swagger2 注解
mpg.setGlobalConfig(gc);
// 数据源配置
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl("jdbc:mysql://localhost:3306/ant?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true");
// dsc.setSchemaName("public");
dsc.setDriverName("com.mysql.cj.jdbc.Driver");
dsc.setUsername("root");
dsc.setPassword("密码");
mpg.setDataSource(dsc);
// 包配置
PackageConfig pc = new PackageConfig();
pc.setModuleName(scanner("模块名"));
pc.setParent("com.baomidou.ant");
mpg.setPackageInfo(pc);
// 自定义配置
InjectionConfig cfg = new InjectionConfig() {
@Override
public void initMap() {
// to do nothing
}
};
// 如果模板引擎是 freemarker
String templatePath = "/templates/mapper.xml.ftl";
// 如果模板引擎是 velocity
// String templatePath = "/templates/mapper.xml.vm";
// 自定义输出配置
List 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.setFileCreate(new IFileCreate() {
@Override
public boolean isCreate(ConfigBuilder configBuilder, FileType fileType, String filePath) {
// 判断自定义文件夹是否需要创建
checkDir("调用默认方法创建的目录,自定义目录用");
if (fileType == FileType.MAPPER) {
// 已经生成 mapper 文件判断存在,不想重新生成返回 false
return !new File(filePath).exists();
}
// 允许生成模板文件
return true;
}
});
*/
cfg.setFileOutConfigList(focList);
mpg.setCfg(cfg);
// 配置模板
TemplateConfig templateConfig = new TemplateConfig();
// 配置自定义输出模板
//指定自定义模板路径,注意不要带上.ftl/.vm, 会根据使用的模板引擎自动识别
// templateConfig.setEntity("templates/entity2.java");
// templateConfig.setService();
// templateConfig.setController();
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.setSuperControllerClass("你自己的父类控制器,没有就不用设置!");
// 写于父类中的公共字段
strategy.setSuperEntityColumns("id");
strategy.setInclude(scanner("表名,多个英文逗号分割").split(","));
strategy.setControllerMappingHyphenStyle(true);
strategy.setTablePrefix(pc.getModuleName() + "_");
mpg.setStrategy(strategy);
mpg.setTemplateEngine(new FreemarkerTemplateEngine());
mpg.execute();
}
}
2.4 快速开始
红色部分是要修改的部分
如果想进一步了解配置,可以去官网参考文档。
2.5 运用过程中遇到的问题
(1)数据源配置
图三已经给出配置方法,按照原来的文件配置,会出现一些问题。
(2)entity层
自动生成的代码,entity层的pojo文件,没有TableName和TableId注解和相应配置,在执行方法时,不会报错,但是也不执行,为了找该错误花了不少时间。
mybaitis快速生成_关于Mybatis-Plus代码生成器快速使用心得相关推荐
- IDEA try catch快捷键、 快速生成get set 方法快捷键、快速生成有参和无参构造方法快捷键
IDEA try catch快捷键. 快速生成get set 方法快捷键.快速生成有参和无参构造方法 1. try catch快捷键 小伙伴们在写代码的过程中,有时需要抛出异常,手写太浪费时间,我们想 ...
- php表单生成器实验报告,PHP表单生成器,快速生成现代化的form表单,快速上手
form-builder PHP表单生成器,快速生成现代化的form表单.包含复选框.单选框.输入框.下拉选择框等元素以及省市区三级联动.时间选择.日期选择.颜色选择.树型.文件/图片上传等功能. 本 ...
- win10关闭快速启动_注意:win10系统快速启动功能虽然好用,但也会带来一些麻烦...
快速启动是首先在Windows 8中实现并延续到Windows 10的功能,可在启动电脑时提供更快的启动时间.这是一个很方便的功能,也是大多数人在不知情的情况下使用的功能,但有一些高手会禁用它,为什么 ...
- 用matlab对excel数据傅里叶变换,快速傅里叶变换_用excel如何作快速傅里叶变换?...
用excel如何作快速傅里叶变换? 具体实例如下: 1.对于时间序列,可以展开成傅立叶级数,进行频谱分析.对于时间序列xt其傅立叶级数展开式为展开成傅立叶级数: 由图可见,图形完全对称,通常只取左半部 ...
- java super快速生成_为什么当我使用编辑器代码生成器时,eclipse会在构造函数中自动添加一个java super()方法?...
正如@Kon在他的评论中提到的, Java中的一个空构造函数包含对超类构造函数的隐式调用. 此外,没有明确调用super()的非空构造函数将在顶部具有隐式调用. 离开super()调用是唯一的时候,如 ...
- 网站快速成型_我的老板对快速成型有什么期望?
网站快速成型 Some of the top excuses I have gotten from clients when inviting them into a prototyping sess ...
- java安卓开发 快速入门_安卓程序员如何快速入门后端开发常识
首先,对于安卓开发人员来说,学习一下后端开发知识是有必要的,一方面可以拓展自身的知识面,另一方面也可以推动自己走向全栈程序员发展路线,在云计算时代,全栈程序员的发展空间会更大一些. 相对来说,安卓程序 ...
- python快速数据分析_收藏 | 10个可以快速用Python进行数据分析的小技巧
编译:小七.蒋宝尚 一些小提示和小技巧可能是非常有用的,特别是在编程领域.有时候使用一点点黑客技术,既可以节省时间,还可能挽救"生命". 一个小小的快捷方式或附加组件有时真是天赐之 ...
- java版我的世界快速建造_我的世界原版快速打造建筑指令教程分享
导读:在我的世界中,玩家可以利用MOD来进行快速建造,下面小编我就来教教大家原版快速建造建筑的教程,通过下面的指令,就可以轻松的实现. 快速建筑Mod,都知道吧,就是按一下,然后出来个大房子的东西 这 ...
最新文章
- 今日arXiv精选 | 13 篇 ICCV 2021 最新论文
- boost::spirit模块实现错误处理的测试程序
- [网络安全自学篇] 四十四.Windows远程桌面服务缺陷(CVE-2019-0708)复现及防御详解
- php dom 丢失内容,PHP DOMDocument缺失
- python中字典的value可以为任意对象_Python学习之字典的删改查操作
- Centos7.0系统下Rsync+sersync实现多文件数据实时增量同步
- [转载] Python 学习 - Numpy
- Lucene创建索引与搜索索引试手
- Visio软件方案UML选择
- 使用爬虫下载x书视频
- php探针作用,php探针使用原理和技巧讲解
- 软件项目经理应具备的素质和条件_软件企业项目经理应具备的基本能力
- 微信小程序 自定义导航栏
- 指环王中那个白色头发、擅长用弓箭的精灵族男子
- 国产PLM软件在创新实践中强势崛起
- 【SeedCoder2015年 热身题5 搜索】上上下下ABAB (题目+答案)
- golang 开源项目
- WIFI能杀死植物吗?
- VMware14下载安装ubuntu14.04.6(VMware系列二)
- Java实验作业13(星座测试系统)
热门文章
- python模块cv2人脸识别_Python基于Opencv来快速实现人脸识别过程详解(完整版)
- 对于python的感受_聊聊我对python的感受
- 针织erp_编程源于我们长期的针织工作
- Generator函数的基本概念
- 工业机器人控制问题---来自睿慕课
- linux 根目录分配多少好,Linux下硬盘怎么分区才合适:根分区(/)交换分区(/swap)和/boot分区需要多大...
- 手机距离传感器坏了有什么影响_适合手机兼职的工作有什么影响吗
- 数据结构----依据出栈顺序判断所需的最少栈空间
- nuxt.js 引入第三方插件报window is not defined
- Nginx http 视频点播服务器搭建操作指南