MyBatis-Plus 代码生成(新)
MyBatis-Plus 的代码生成功能十分人性化,即支持通过简单的配置实现,也可以通过自定义模板实现。
这里列出项目中的常用配置供参考,其他配置可以参考官网:https://baomidou.com/pages/981406
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.fill.Column;
import com.sevnce.base.core.global.controller.BaseController;
import com.sevnce.base.core.global.entity.BaseEntity;
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
/**
* 代码快速生成
*/
public class FastGenerator {
/**
* 作者名
*/
public static final String AUTHOR = "廖航";
/**
* 生成的表名(多个表用英文逗号分隔,所有表输入 all)
*/
private static final String TABLES = "all";
/**
* jdbc 路径
*/
private static final String URL = "jdbc:mysql://dev.7tyun.com:9102/uam_new";
/**
* 数据库账号
*/
private static final String USER_NAME = "root";
/**
* 数据库密码
*/
private static final String PASS_WORD = "robot@db";
/**
* 项目所在目录
*/
private static final String PROJECT = "D:\\Project\\SEVNCE\\sevnce-cloud";
/**
* 模块名
*/
private static final String MODEL = "sevnce-modules\\sevnce-auth";
/**
* 包名
*/
private static final String PARENT = "com.sevnce.auth";
/**
* 业务名
*/
private static final String BUSINESS = "system";
/**
* 代码主路径(一般不用更改)
*/
private static final String MAIN = "src\\main\\java";
/**
* mapperXml 路径(一般不用更改)
*/
public static final String MAPPER = "src\\main\\resources\\mapper";
/**
* 父类公共字段(一般不用更改)
*/
public static final List<String> COMMON_COLUMNS = new ArrayList<>(Arrays.asList("id", "create_by", "create_name", "create_date", "update_by", "update_name", "update_date", "del_flag", "remarks", "remark1", "remark2", "remark3", "remark4", "remark5"));
public static void main(String[] args) {
// 开始代码生成
FastAutoGenerator.create(URL, USER_NAME, PASS_WORD)
// 全局配置
.globalConfig(builder -> { builder
// 禁止打开输出目录
.disableOpenDir()
// 指定输出目录(默认值: windows:D:// linux or mac : /tmp)
.outputDir(PROJECT + File.separator + MODEL + File.separator + MAIN)
// 开启 SpringDoc 模式
.enableSpringdoc()
// 作者名
.author(AUTHOR)
// 时间策略(默认值: DateType.TIME_PACK,java8 新的时间类型)
.dateType(DateType.TIME_PACK)
// 注释日期(默认值: yyyy-MM-dd)
.commentDate("yyyy-MM-dd HH:mm");
})
// 包配置
.packageConfig(builder -> { builder
// 包名
.parent(PARENT)
// 业务名
.moduleName(BUSINESS)
.entity("entity.po")
// mapperXml 生成路径
.pathInfo(Collections.singletonMap(OutputFile.xml, PROJECT + File.separator + MODEL + File.separator + MAPPER));
})
// 策略配置
.strategyConfig(builder -> { builder
// 设置需要生成的表名
.addInclude(getTables(TABLES))
// 控制层策略
.controllerBuilder()
// 设置父类
.superClass(BaseController.class)
// 生成 @RestController
.enableRestStyle()
// 服务层策略
.serviceBuilder()
// 服务类名称格式
.formatServiceFileName("%sService")
// 实体类策略
.entityBuilder()
// 设置父类
.superClass(BaseEntity.class)
// 添加父类公共字段
.addSuperEntityColumns(COMMON_COLUMNS)
// 开启 lombok 模型
.enableLombok()
// 不生成serialVersionUID(父类定义了)
.disableSerialVersionUID()
// 开启生成实体时生成字段注解
.enableTableFieldAnnotation()
// 逻辑删除字段名(数据库)
.logicDeleteColumnName("del_flag")
// 逻辑删除属性名(实体)
.logicDeletePropertyName("delFlag")
// 创建时间填充
.addTableFills(new Column("create_date", FieldFill.INSERT))
// 更新时间填充
.addTableFills(new Column("update_date", FieldFill.INSERT_UPDATE))
// 全局主键类型(自行设置)
.idType(IdType.INPUT)
// 是否允许覆盖现存文件
.enableFileOverride();
})
// 执行
.execute();
}
/**
* 处理所有表的情况
* @param tables 表名
* @return 结果
*/
private static List<String> getTables(String tables) {
return "all".equals(tables) ? Collections.emptyList() : Arrays.asList(tables.split(","));
}
}
MyBatis-Plus 代码生成(新)的更多相关文章
- MyBatis学习总结_15_定制Mybatis自动代码生成的maven插件
==================================================================================================== ...
- 我最喜欢的Mybatis 3.5新特性!超实用!
Mybatis 3.5 发布有段时间了,终于支持了 Optional ,这么实用的特性,竟然还没人安利……于是本文出现了. 新特性比较简单,但非常实用,因为能大量简化恶心的判空代码. WARNING ...
- 通过eclipse mybatis generater代码生成插件自动生成代码
Mybatis属于半自动ORM,在使用这个框架中,工作量最大的就是书写Mapping的映射文件,由于手动书写很容易出错,我们可以利用Mybatis-Generator来帮我们自动生成文件.通过在Ecl ...
- MyBatis学习总结(15)——定制Mybatis自动代码生成的maven插件
==================================================================================================== ...
- Mybatis Generator 代码生成配置
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration ...
- Mybatis generator代码生成
背景 项目中使用Mybatis做持久层框架,但由于开发成员水平不一,写dao的时候,各有各的偏好,有时候还会写出带sql注入漏洞的代码. 出现sql注入漏洞,一般是#和$的区别没弄明白: $ 直接把字 ...
- java web开发入门十一(idea maven mybatis自动代码生成)基于intellig idea
6.idea maven mybatis逆向工程(代码生成器) 1.配置pom.xml 在plugins标签下添加mybatis-generator-maven-plugin <plugin&g ...
- MyBatis学习---逆向工程 Mybatis Generator代码生成
[目录]
- 使用mysql8.+版本,使用mybatis的代码生成工具:mybatis-generator连接数据库时Unknown initial character set index '255' received from server. Initial client character set can be forced via the 'characterEncoding' property.
Error connecting to database: (using class org.gjt.mm.mysql.Driver)Unknown initial character set ind ...
- 001-脚手架发展,基础代码结构+mybatis代码生成
一.概述 脚手架是为了保证各施工过程顺利进行而搭设的工作平台. 编程领域中的“脚手架(Scaffolding)”指的是能够快速搭建项目“骨架”的一类工具. java变成中,架构师搭建的代码结构你到处拷 ...
随机推荐
- 【应用服务 App Service】App Service For Windows 如何挂载Storage Account File Share 示例
问题描述 很早之前,介绍了在 App Service for Linux中挂载 Storage Account共享文件,当时Windows无法实现这个功能.而现在,App Service For Wi ...
- 微信小程序开发:接入阿里云人像动漫化api接口
前面我已经把腾讯云的人像转动漫化接口接到了我的小程序里,但是和阿里云的对比后,发现阿里云的效果会更好一些,且支持更多特效,如下: 我比较喜欢这个3D特效风格,动画3D也可以,大家拭目以待. 话说上次接 ...
- dart特殊符号语法(一)
许久没有写博客.浏览以往的博客,是那么稚嫩.就让它们当成成长的照片吧.重新开始操起这个记录的爱好,一方面把它当成可以查阅的资料,方便自己:另一方面希望有帮助于人.由于个人能力,认知有限,如读者发现有纰 ...
- 学习ASP.NET Core Razor 编程系列文章目录
学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二--添加一个实体 学习ASP.NET Core Razor 编程系列三--创建数据表及创建项目 ...
- 基于ADS1292芯片的解决方案之源码解析
接口解析 A 该芯片和主控使用的是SPI接口通信的. SPI接口一般有四根线,确保四根线准确连接是对的. B 该芯片可以有中断模式数据触发,所以,主控mcu需要有外部中断处理流程. //DRDY中断 ...
- Docker部署nginx配置SSL多目录
对自己第一次搭建nginx做个简要的笔记 第一步:创建宿主机挂载点目录 mkdir -p /home/nginx/{conf,conf.d,html,log,ssl} 第二步:安装简易版nginx,复 ...
- Window10系统通过软件切换扬声器与耳机的音源输出
原文地址: Window10系统通过软件切换扬声器与耳机的音源输出 - Stars-One的杂货小窝 个人平常一般使用扬声器,但有时候直播或和别人打游戏的时候,可能会带上耳机 目前的情况就是手动去插播 ...
- day12-面向对象03
面向对象03 10.抽象类 abstract修饰符可以用来修饰方法也可以修饰类,如果修饰方法,那么该方法就是抽象方法:如果修饰类,那么该类就是抽象类 抽象类中可以没有抽象方法,但是有抽象方法的类一定要 ...
- 移远EC20 4G模块Linux驱动移植和测试
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明 本文作为本人csdn blog的主站的备份.(Bl ...
- dubbo 泛化调用场景下,如何调用下游的泛型对象入参
dubbo泛化调用时,除了java原生的collection,map泛型对象,业务自定义的泛型对象是不支持泛化调用的,无法正确的填充下游数据对象.两种解法: 泛化调用的时候把泛型具体类型的全限定类路径 ...