JavaUtils - [04] 代码生成器(新)
题记部分

001 || 引入依赖
<!-- Code Generator -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.9</version>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.32</version>
</dependency>
002 || 核心内容
package com.manulife.common;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import java.util.Collections;
import java.util.Scanner;
/**
* @author harley
* @since 2024-12-09 22:00:02
*/
public class CodeGenerator {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 获取数据库连接信息
System.out.println("请输入数据库URL:");
String dbUrl = scanner.nextLine();
System.out.println("请输入数据库用户名:");
String dbUsername = scanner.nextLine();
System.out.println("请输入数据库密码:");
String dbPassword = scanner.nextLine();
// 获取其他配置信息
System.out.println("请输入作者名字:");
String author = scanner.nextLine();
System.out.println("请输入父包名(例如:com.yourcompany):");
String parentPackage = scanner.nextLine();
System.out.println("请输入模块名(例如:module-name):");
String moduleName = scanner.nextLine();
System.out.println("请输入需要生成的表名(多个表以逗号分隔):");
String tableNames = scanner.nextLine();
FastAutoGenerator.create(dbUrl, dbUsername, dbPassword)
.globalConfig(builder -> {
builder.author(author) // 设置作者名
.outputDir(System.getProperty("user.dir") + "/src/main/java"); // 设置输出目录
})
.packageConfig(builder -> {
builder.parent(parentPackage) // 设置父包名
.moduleName(moduleName) // 设置模块名
.entity("entity") // 实体类包名
.mapper("mapper") // 映射层包名
.service("service") // 服务层包名
.serviceImpl("service.impl") // 服务层实现类包名
.controller("controller") // 控制层包名
.pathInfo(Collections.singletonMap(OutputFile.xml, System.getProperty("user.dir") + "/src/main/resources/mapper")); // 设置mapper.xml生成路径
})
.strategyConfig(builder -> {
builder.addInclude(tableNames.split(",")) // 设置需要生成的表名
.entityBuilder() // 实体类生成策略
// .formatFileName("%sBean") // 实体类文件名格式
.enableLombok() // 开启 Lombok 模型
.logicDeleteColumnName("isDeleted") // 逻辑删除字段名
.controllerBuilder() // 控制器生成策略
.formatFileName("%sController") // 控制层文件名格式
.enableRestStyle() // REST 风格控制器
.enableHyphenStyle() // 使用连字符命名风格
.serviceBuilder() // Service 生成策略
.formatServiceFileName("%sService") // 格式化 service 文件名
.formatServiceImplFileName("%sServiceImpl") // 格式化 serviceImpl 文件名
.mapperBuilder() // Mapper 生成策略
.formatMapperFileName("%sMapper") // 格式化 mapper 文件名
.formatXmlFileName("%sMapper") // 格式化 mapper.xml 文件名
.enableBaseColumnList() // 启用 BaseColumnList, 在mapper.xml中生成对应的配置
.enableBaseResultMap(); // 启用 BaseResultMap, 在mapper.xml中生成对应的配置
})
.templateEngine(new FreemarkerTemplateEngine()) // 使用 FreeMarker 引擎,默认是 Velocity
.execute(); // 执行代码生成
System.out.println("代码生成完成!");
scanner.close();
}
}
003 || 使用
直接运行代码

JavaUtils - [04] 代码生成器(新)的更多相关文章
- Ubuntu 18.04添加新网卡
在Ubuntu 18.04 LTS上配置IP地址的方法与旧方法有很大不同.与以前的版本不同,Ubuntu 18.04使用Netplan(一种新的命令行网络配置实用程序)来配置IP地址. 在这种新方法中 ...
- Ubuntu12.04中新的快捷键(转载)
转自:http://blog.51osos.com/linuxnews/ubuntu12-04%E4%B8%AD%E6%96%B0%E7%9A%84%E5%BF%AB%E6%8D%B7%E9%94%A ...
- Ubuntu 12.04 添加新用户并启用root登录
启动root sudo passwd 输入密码 输入root 新密码并重复 su 切换root 添加用户比如hduser 修改密码hduserchmod u+w /etc/sudoersvi sudo ...
- vmware :Ubuntu 12.04添加新硬盘
http://blog.csdn.net/hanpengyu/article/details/7475645 一.VMware新增磁盘的设置步骤 (建议:在设置虚拟的时候,不要运行虚拟机的系统,不然添 ...
- Ubuntu18.04创建新的系统用户
目标: 1.为测试学习Docker,在虚拟机OS为18.04里,创建一个系统账号,账号名称:docker 2.在/home下有新建username的文件夹 一.建立账号 1.以root账号登录 2.u ...
- 阿里云服务器ECS Ubuntu18.04 建立新用户
昨天花了好长时间终于把界面功能弄好了,今天找时间再折腾一下: 1.建立新的用户: ssh连接上,用以下命令建立新用户,并设置密码: 创建普通用户“myname”成功,接下来为用户“myname”赋予s ...
- api-gateway实践(04)新服务网关 - 新手入门
一.网关引擎环境 1.下载代码 2.搭建环境 3.打包部署 二.配置中心环境 1.下载代码 2.搭建环境 3.打包部署 三.创建业务实例 1.以租户身份登录配置中心,注册 group.version. ...
- ubantu16.04搭配新开发环境说明
安装好ubantu系统后,往往需要搭配个人开发环境,梳理了一些常用的安装步骤: 1.安装node.js 更新ubuntu软件源 sudo apt-get update sudo apt-get ins ...
- 在 Ubuntu 15.04 中使用 ubuntu-make、Eclipse 4.4、Java 8 以及 WTP
Ubuntu 今天发布新版本了 其实昨天(2015-04-23)我就看到了 Ubuntu 发布新版本的新闻,下班后回家的第一件事就是访问 Ubuntu 的官网,很可惜,没有提供下载.今天(2015-0 ...
- Ubuntu 16.04 LTS安装好需要设置的15件事(喜欢新版本)
看到这篇文章说明你已经从老版本升级到 Ubuntu 16.04 或进行了全新安装,在安装好 Ubuntu 16.04 LTS 之后建议大家先做如下 15 件事.无论你是刚加入 Ubuntu 行列的新用 ...
随机推荐
- 阿里云最新npm地址
npm config set registry https://registry.npmmirror.com -g
- Mysql8忽略大小写的解决方案
一.删除服务器数据文件 由于8.0没法设置参数后重启(失败),所以必须删掉老库,重新启动才行. 切记::本步骤要删掉老库所有资料,如果是数据库当前有用,请做好备份,再进行操作. systemctl ...
- 【NAS】绿联NAS+极狐Gitlab+1Panel
1. 准备域名 例如我的 ???.mllt.cc 2. 内网穿透 我使用的Natfrp(https://www.natfrp.com/tunnel/) 创建HTTP隧道(对应端口10080)创建HTT ...
- HttpClientManager
HttpClientManger package com.gateway.http.client; import com.fasterxml.jackson.core.type.TypeReferen ...
- 龙哥量化:MACD指标的金叉死叉,这样使用更准确(图解)
如果您需要代写技术指标公式, 请联系我. 龙哥QQ:591438821 龙哥微信:Long622889 本文的策略过于简单,你可以加一些更复杂的限制条件 1.水上金叉,可看涨; 2.水上死叉,是洗盘; ...
- Redis 的DB多个数据库使用
Redis 自己安装默认提供了16个数据库. 每个数据库都有一个id, 从 0 开始,(0,15). 不同的数据库中数据隔离保存.我们可以通过修改redis的配置文件进行修改数据库的数量. /etc/ ...
- Qt/C++音视频开发63-设置视频旋转角度/支持0-90-180-270度旋转/自定义旋转角度
一.前言 设置旋转角度,相对来说是一个比较小众的需求,如果视频本身带了旋转角度,则解码播放的时候本身就会旋转到对应的角度显示,比如手机上拍摄的视频一般是旋转了90度的,如果该视频文件放到电脑上打开,一 ...
- Qt编写linux上视频流播放器(支持海康大华宇视等各种网络摄像机)
一.前言 在windows上的视频流播放器有很多,而且各个监控厂家无论大厂还是小厂,基本上都提供了客户端,甚至很多第三方的监控平台软件厂商,也都提供了windows的版本,基本的都没有提供linux版 ...
- [转]vue项目中app.vue 、main.js和 index.html的关系
参考链接: 1.vue项目中app.vue .main.js和 index.html的关联 2.Vue中index.html.main.js.App.vue,之间关系 3.关于Vue中main.js, ...
- 基于Netty,徒手撸IM(一):IM系统设计篇
本文收作者"大白菜"分享,有改动.注意:本系列是给IM初学者的文章,IM老油条们还望海涵,勿喷! 1.引言 这又是一篇基于Netty的IM编码实践文章,因为合成一篇内容太长,读起来 ...