今天在做一个项目,使用到了MyBatis Plus的代码生成器,代码生成器主要就是 自动生成 实体类,业务层,数据访问层等。以下就使用代码生成器来生成。
MyBatis-plus 官网:https://mp.baomidou.com/ 为简化而生
https://mp.baomidou.com/guide/generator.html#%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8Bmp.baomidou.com
1.添加MyBatis-Plus 依赖 这里只针对代码生成器,其他依赖不写了
我使用的是Maven来构建项目
2.添加代码生成器依赖
3.添加模板引擎 依赖 (此处有坑)
官网介绍说 默认支持Velocity引擎。 可在使用的时候却出错了。 后来添加了Freemarker:引擎就好了, 当然个人是如此,你们会不会有这个问题就不知道了。
添加了 自定义模板引擎 就得添加这段话 官网有。
4.创建一个类, 添加 main方法用来 执行代码生成器
下面代码 都是从MyBatis- Plus 上copy的
/**
* <p>
* 读取控制台内容。 内容有 :模块名, 表名 从控制台接收
* </p>
*/
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()) {
System._out_.println("000");
String ipt = scanner.next();
if (StringUtils._isNotEmpty_(ipt)) {
System._out_.println("111");
return ipt;
}
}
throw new MybatisPlusException("请输入正确的" + tip + "!");
}
public static void main(String[] args) {
// 代码生成器
AutoGenerator mpg = new AutoGenerator();
// set freemarker engine 自定义模块引擎
mpg.setTemplateEngine(new FreemarkerTemplateEngine());
// 全局配置
GlobalConfig gc = new GlobalConfig();
//获取当前项目根目录 无需更改
String projectPath = System._getProperty_("user.dir");
//所有的生成的包和类到此路径下
gc.setOutputDir(projectPath+"/src/main/java" );
//开发人员名字 可忽略
gc.setAuthor("auth");
// 是否打开输出目录,就是代码生成后是否打开文件夹的意思
gc.setOpen(true);
// gc.setSwagger2(true); 实体属性 Swagger2 注解
mpg.setGlobalConfig(gc);
// 数据源配置
DataSourceConfig dsc = new DataSourceConfig();
//连接数据库 URL
dsc.setUrl("jdbc:mysql://localhost:3306/1123erp?useUnicode=true&useSSL=false&characterEncoding=utf8");
// dsc.setSchemaName("public");
//数据库驱动
dsc.setDriverName("com.mysql.jdbc.Driver");
//数据库用户名
dsc.setUsername("root");
//数据库密码
dsc.setPassword("123456");
mpg.setDataSource(dsc);
// 包配置
PackageConfig pc = new PackageConfig();
//这里 就是调用了main方法外面的 scanner方法。 来从控制台获取 模块名
pc.setModuleName(_scanner_("模块名"));
//这里可以看做 自己的包名
pc.setParent("com.example.springbooterpdemo");
//创建实体类包名
pc.setEntity("entity");
//创建业务层接口
pc.setService("service");
//创建实现类
pc.setServiceImpl("serviceImpl");
//Mapper Dao层的意思
pc.setMapper("mapper");
//Controller 控制层
pc.setController("controller");
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<FileOutConfig> 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("调用默认方法创建的目录");
return false;
}
});
//
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();
}
5.运行之后就这样 跟官网一样。
要是有问题 可以问我。
Original url: Access
Created at: 2020-09-16 15:20:06
Category: default
Tags: none
未标明原创文章均为采集,版权归作者所有,转载无需和我联系,请注明原出处,南摩阿彌陀佛,知识,不只知道,要得到
java windows火焰图_mob64ca12ec8020的技术博客_51CTO博客 - 在windows下不可行,不知道作者是怎样搞的 监听SpringBoot 服务启动成功事件并打印信息_监听springboot启动完毕-CSDN博客 SpringBoot中就绪探针和存活探针_management.endpoint.health.probes.enabled-CSDN博客 u2u转换板 - 嘉立创EDA开源硬件平台 Spring Boot 项目的轻量级 HTTP 客户端 retrofit 框架,快来试试它!_Java精选-CSDN博客 手把手教你打造一套最牛的知识笔记管理系统! - 知乎 - 想法有重合-理论可参考 安宇雨 闲鱼 机械键盘 客制化 开贴记录 文本 linux 使用find命令查找包含某字符串的文件_beijihukk的博客-CSDN博客_find 查找字符串 ---- mac 也适用 安宇雨 打字音 记录集合 B站 bilibili 自行搭建 开坑 真正的客制化 安宇雨 黑苹果开坑 查找工具包maven pom 引用地 工具网站 Dantelis 介绍的玩轴入坑攻略 --- 关于轴的一些说法 --- 非官方 ---- 心得而已 --- 长期开坑更新 [本人问题][新开坑位]关于自动化测试的工具与平台应用 机械键盘 开团 网站记录 -- 能做一个收集的程序就好了 不过现在没时间 -- 信息大多是在群里发的 - 你要让垃圾佬 都去一个地方看难度也是很大的 精神支柱 [超级前台]sprinbboot maven superdesk-app 记录 [信息有用] [环境准备] [基本完成] [sebp/elk] 给已创建的Docker容器增加新的端口映射 - qq_30599553的博客 - CSDN博客 [正在研究] Elasticsearch, Logstash, Kibana (ELK) Docker image documentation elasticsearch centos 安装记录 及 启动手记 正式服务器 39 elasticsearch 问题合集 不断更新 6.1.1 | 6.5.1 两个版本 博客程序 - 测试 - bug记录 等等问题 laravel的启动过程解析 - lpfuture - 博客园 OAuth2 Server PHP 用 Laravel 搭建带 OAuth2 验证的 RESTful 服务 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区 利用Laravel 搭建oauth2 API接口 附 Unauthenticated 解决办法 - 煮茶的博客 - SegmentFault 思否 使用 OAuth2-Server-php 搭建 OAuth2 Server - 午时的海 - 博客园 基于PHP构建OAuth 2.0 服务端 认证平台 - Endv - 博客园 Laravel 的 Artisan 命令行工具 Laravel 的文件系统和云存储功能集成 浅谈Chromium中的设计模式--终--Observer模式 浅谈Chromium中的设计模式--二--pre/post和Delegate模式 浅谈Chromium中的设计模式--一--Chromium中模块分层和进程模型 DeepMind 4 Hacking Yourself README.md update 20211011
Laravel China 简书 知乎 博客园 CSDN博客 开源中国 Go Further Ryan是菜鸟 | LNMP技术栈笔记 云栖社区-阿里云 Netflix技术博客 Techie Delight Linkedin技术博客 Dropbox技术博客 Facebook技术博客 淘宝中间件团队 美团技术博客 360技术博客 古巷博客 - 一个专注于分享的不正常博客 软件测试知识传播 - 测试窝 有赞技术团队 阮一峰 语雀 静觅丨崔庆才的个人博客 软件测试从业者综合能力提升 - isTester IBM Java 开发 使用开放 Java 生态系统开发现代应用程序 pengdai 一个强大的博主 HTML5资源教程 | 分享HTML5开发资源和开发教程 蘑菇博客 - 专注于技术分享的博客平台 个人博客-leapMie 流星007 CSDN博客 - 舍其小伙伴 稀土掘金 Go 技术论坛 | Golang / Go 语言中国知识社区
最新评论