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 代码生成(新)的更多相关文章

  1. MyBatis学习总结_15_定制Mybatis自动代码生成的maven插件

    ==================================================================================================== ...

  2. 我最喜欢的Mybatis 3.5新特性!超实用!

    Mybatis 3.5 发布有段时间了,终于支持了 Optional ,这么实用的特性,竟然还没人安利……于是本文出现了. 新特性比较简单,但非常实用,因为能大量简化恶心的判空代码. WARNING ...

  3. 通过eclipse mybatis generater代码生成插件自动生成代码

    Mybatis属于半自动ORM,在使用这个框架中,工作量最大的就是书写Mapping的映射文件,由于手动书写很容易出错,我们可以利用Mybatis-Generator来帮我们自动生成文件.通过在Ecl ...

  4. MyBatis学习总结(15)——定制Mybatis自动代码生成的maven插件

    ==================================================================================================== ...

  5. Mybatis Generator 代码生成配置

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration ...

  6. Mybatis generator代码生成

    背景 项目中使用Mybatis做持久层框架,但由于开发成员水平不一,写dao的时候,各有各的偏好,有时候还会写出带sql注入漏洞的代码. 出现sql注入漏洞,一般是#和$的区别没弄明白: $ 直接把字 ...

  7. java web开发入门十一(idea maven mybatis自动代码生成)基于intellig idea

    6.idea maven mybatis逆向工程(代码生成器) 1.配置pom.xml 在plugins标签下添加mybatis-generator-maven-plugin <plugin&g ...

  8. MyBatis学习---逆向工程 Mybatis Generator代码生成

    [目录]

  9. 使用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 ...

  10. 001-脚手架发展,基础代码结构+mybatis代码生成

    一.概述 脚手架是为了保证各施工过程顺利进行而搭设的工作平台. 编程领域中的“脚手架(Scaffolding)”指的是能够快速搭建项目“骨架”的一类工具. java变成中,架构师搭建的代码结构你到处拷 ...

随机推荐

  1. 【Azure API 管理】Azure API Management在设置 Policy时,如何对URL进行解码呢? 使用 HttpUtility.UrlDecode 出错

    问题描述 Azure API Management在设置 Policy时,如何对URL进行解码呢? 使用 HttpUtility.UrlDecode 出错,是否有其他可以对URL解码的方法呢? 使用H ...

  2. Effective C++ 第一章:让自己习惯C++

    Effective C++ 第一章:让自己习惯C++ 引言 最近在阅读这本<effective C++ 改善程序与设计的55个具体做法>这本书,为了以后忘记的时候回顾,写一些笔记,每次笔记 ...

  3. Java对象引用和内存管理的细节

    在Java中,当局部变量(比如方法参数)的作用域结束时,这个局部变量的引用确实不再存在,但这并不意味着它引用的对象会被销毁.对象的销毁是由Java的垃圾回收器(Garbage Collector, G ...

  4. Git 常用的基础命令

    #克隆项目到本地.url:项目的git地址:local_dir_name:克隆项目到本地的目录名称,如果不写就默认是git项目中的目录名称 git clone <url> <loca ...

  5. 摆脱鼠标系列 - vscode - 页内 Ctrl + F 搜索完 回车下一个,选到后按 Esc退回到编辑状态

    为什么 这个很基础,但是没有细细整理 摆脱鼠标系列 - vscode - 页内 Ctrl + F 搜索完 回车下一个,选到后按 Esc退回到编辑状态 之前还找了个快捷键 Alt + Enter,发现冲 ...

  6. 浏览器的文件访问 API 入门(英文)- 资料

    浏览器的文件访问 API 入门(英文)- 资料 浏览器现在提供了文件访问 API(File System Access API),允许网页 JS 脚本读写本地文件,本文是一个详细的介绍.另外,也可以参 ...

  7. Vue2和ElementUI编写的无限级菜单路由

    Vue2和ElementUI编写的无限级菜单路由 文章转载自:www.javaman.cn <template> <div> <el-menu :default-acti ...

  8. day01-2-导入驱动和工具类

    满汉楼01-2 4.功能实现01 4.1导入驱动和工具类 4.1.1导入驱动 首先将连接mysql的相关jar包引入项目中,分别右键,点击add as library 4.1.2导入工具类Utilit ...

  9. Spring Boot学习日记14

    Thymeleaf 语法学习 简单表达式: 变量表达式:${...} 选择变量表达式:*{...} 消息表达式:#{...} 链接网址表达式:@{...} 片段表达式:~{...} 文字 文本文本:, ...

  10. 【虚拟仿真】3DCAT虚拟仿真在化工安全方面的应用

    随着中国经济的快速发展,石油化工企业的生产事故也在频繁发生.国家目前对生产安全的重视程度提高到前所未有的高度.企业也在安全管理上做了许多工作,如:进行安全培训,制定安全手册等.但这些方式的效果不明显, ...