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变成中,架构师搭建的代码结构你到处拷 ...
随机推荐
- 第一百一十六篇: JavaScript理解对象
好家伙,本篇为<JS高级程序设计>第八章"对象.类与面向对象编程"学习笔记 1.关于对象 ECMA-262将对象定义为一组属性的无序集合.严格来说,这意味着对象就是 ...
- CentOS6.8下yum安装Nginx
在/etc/yum.repos.d/目录下创建一个源配置文件nginx.repo: cd /etc/yum.repos.d/ vim nginx.repo 填写如下内容: [nginx] name=n ...
- [C++逆向] 6 函数的工作原理
目录 栈帧的形成和关闭 各种调用方式的考察 _stdcall _cdecl _fastcall 使用ebp或者esp寻址 某次调用函数时的栈结构 函数参数 不定长参数 函数的返回值 栈帧的形成和关闭 ...
- 为SQL Server配置连接加密
前言 很多客户在对数据库做安全审计时要求配置连接加密,本文就如何配置加密以及使用证书做一个系统的整理. 连接加密 首先,连接加密不是透明数据加密,很多人经常把两个概念混淆.连接加密是指客户端程序和SQ ...
- String对象和String常量池
1. String的基本特性 String:字符串,使用一对 "" 引起来表示 String s1 = "mogublog" ; // 字面量的定义方式 Str ...
- jenkins 钉钉机器人插件
官方文档: https://jenkinsci.github.io/dingtalk-plugin/guide/getting-started.html#%E6%B3%A8%E6%84%8F 注意:系 ...
- rust简要笔记
第一个程序, 我们不用安装编辑器,直接在现成的网页编辑器上运行 https://play.rust-lang.org/
- XAF新手入门 - XAF设计模式探讨
前言 刚接触XAF的小伙伴可能会有一个疑惑,XAF中有Model(BusinessObject).View.Controller,感觉明显是一个MVC的设计模式,但当你用MVC的设计模式与其对应时,又 ...
- Java中float和double的精度
比较基本类型double和float和某一个数是否相等的时候,不要用==或>=或<=,因为double和float都是有精度问题的,计算机只能保存一定位数的小数,这就会存在精度问题. 下面 ...
- 【个人笔记】Nestjs使用TypeORM注意点
在Nestjs使用TypeORM还是有一些注意点. entities路径配置注意点 在nestjs中使用TypeORM,需要配置数据库连接(以MySQL为例).需要特别注意的是配置参数里面的entit ...