Mybatiplus通用3.5.1版本及其以上的代码生成器工具类

package com.gton.util;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;
import com.baomidou.mybatisplus.generator.config.querys.MySqlQuery;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.engine.VelocityTemplateEngine;
import com.baomidou.mybatisplus.generator.fill.Column;
import com.baomidou.mybatisplus.generator.fill.Property;
import com.baomidou.mybatisplus.generator.keywords.MySqlKeyWordsHandler; import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Properties; /**
* @description: Mybatis-Plus3.5.1代码生成器
* @author: GuoTong
* @createTime: 2022-02-13 16:59
* @since JDK 1.8 OR 11
**/
@SuppressWarnings("unchecked")
public class AutoGeneratorTools { /**
* Description:
* 使用前:
* 指定生成的模块名称:modelName
* 指定生成业务子包名称:mkdirFiile
*
* @author: GuoTong
* @date: 2022-10-22 22:03:01
*/
private static String modelName = "/commodity/";
// 按照业务划分不同多个子包
private static String mkdirFiile = "user"; private final String url = "jdbc:mysql://127.0.0.1:3306/study?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC"; // 高版本的DataSource不需要驱动 保留
private final String driver = "com.mysql.jdbc.Driver"; private final String username = "root";
private final String password = "root"; public static void main(String[] args) {
AutoGeneratorTools autoGeneratorTools = new AutoGeneratorTools();
String userDir = System.getProperty("user.dir");
String path = "src/main/java";
String parentPath = "com.gton." + mkdirFiile;
String mapperXmlPath = "/com/gton/" + mkdirFiile + "/mapper/xml";
List<String> tables = new ArrayList<>();
tables.add("product_buying");
autoGeneratorTools.getDataSourceByFile();
// 代码自动生成
autoCreateCode(autoGeneratorTools, userDir, path, parentPath, mapperXmlPath, tables); } private Properties getDataSourceByFile() {
FileInputStream dataSource = null;
InputStream dataSourceStream = null; try {
String property = System.getProperty("user.dir");
dataSource = new FileInputStream(property + "/common/src/main/resources/application.properties");
dataSourceStream = new BufferedInputStream(dataSource);
Properties ps = new Properties();
ps.load(dataSourceStream);
return ps;
} catch (IOException e) {
e.printStackTrace();
} finally {
if (dataSourceStream != null) {
try {
dataSourceStream.close();
} catch (IOException e) {
e.printStackTrace();
}
} if (dataSource != null) {
try {
dataSource.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return new Properties();
} private static void autoCreateCode(AutoGeneratorTools autoGeneratorTools, String userDir, String path, String parentPath, String mapperXmlPath, List<String> tables) {
FastAutoGenerator.create(autoGeneratorTools.getDataConfigBuilder()).
globalConfig(builder ->
builder.author("GuoTong").
commentDate("yyyy-MM-dd").
enableSwagger().
dateType(DateType.TIME_PACK).
disableOpenDir().
outputDir(userDir + modelName + path)).
packageConfig(builder ->
builder.parent(parentPath).
moduleName("").
entity("entity").
service("service").
serviceImpl("service.impl").
mapper("mapper").
xml("mapper.xml").
controller("controller").
pathInfo(Collections.singletonMap(OutputFile.mapperXml, userDir + modelName + path + mapperXmlPath))).
strategyConfig(builder ->
builder.addInclude(tables).
entityBuilder().
idType(IdType.ASSIGN_ID).
enableLombok().
enableTableFieldAnnotation().
enableChainModel().
logicDeleteColumnName("is_del").
logicDeletePropertyName("isDel").
addTableFills(new Column("create_time", FieldFill.INSERT)).
addTableFills(new Property("createTime", FieldFill.INSERT)).
addTableFills(new Column("update_time", FieldFill.INSERT_UPDATE)).
addTableFills(new Property("updateTime", FieldFill.INSERT_UPDATE)).
controllerBuilder().
formatFileName("%sController").
enableRestStyle().
serviceBuilder().
formatServiceFileName("%sService").
formatServiceImplFileName("%sServiceImpl").
mapperBuilder().
enableBaseColumnList().
enableMapperAnnotation().
enableBaseResultMap().
formatMapperFileName("%sMapper").
formatXmlFileName("%sMapper")).
templateEngine(new VelocityTemplateEngine()).execute();
} private DataSourceConfig.Builder getDataConfigBuilder() {
Properties dataSourceByFile = getDataSourceByFile();
Object dbURl = dataSourceByFile.getOrDefault("spring.datasource.url", url);
Object dbUsername = dataSourceByFile.getOrDefault("spring.datasource.username", username);
Object dbPassword = dataSourceByFile.getOrDefault("spring.datasource.password", password);
return new DataSourceConfig.Builder(dbURl.toString(), dbUsername.toString(), dbPassword.toString()).
dbQuery(new MySqlQuery()).
keyWordsHandler(new MySqlKeyWordsHandler()).
schema("Mybatis-Plus").
typeConvert(new MySqlTypeConvert());
}
}

可以读取classpath下的数据源配置:application.properties


#数据源
spring.datasource.url=jdbc:mysql://130.33.238.27:3306/cloud_market?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=root

Mybatiplus通用3.5.1版本及其以上的代码生成器工具类的更多相关文章

  1. Asp.net Core + EF Core + Bootstrap搭建的MVC后台通用管理系统模板(跨平台版本)

    Asp.net Core + EF Core + Bootstrap搭建的MVC后台通用管理系统模板(跨平台版本) 原创 2016年07月22日 10:33:51 23125 6月随着.NET COR ...

  2. 通用访问 - 用“反射”来设计通用的通信协议,以及配套的SDK、工具

    1. 效果演示 2. 通信协议 功能介绍 特点 TCP协议 WebApi协议 3. SDK与工具 4. 应用示例 迷你网管 通用GIS 系统管理 5. 设计初衷与演化   1. 效果演示     服务 ...

  3. 通用超级强大的基于Oracle数据库的代码生成器

    项目中使用了Oracle数据库,命名基本规范为表名和字段名全部大写,用下划线分割各个单词: 如“BASE_USER_LOGON_EXTEND”这个表表示用户登录的扩展表. 基于这个规范,通用权限管理系 ...

  4. 一个基于POI的通用excel导入导出工具类的简单实现及使用方法

    前言: 最近PM来了一个需求,简单来说就是在录入数据时一条一条插入到系统显得非常麻烦,让我实现一个直接通过excel导入的方法一次性录入所有数据.网上关于excel导入导出的例子很多,但大多相互借鉴. ...

  5. Excel和Word 简易工具类,JEasyPoi 2.1.5 版本发布

    Excel和Word 简易工具类,JEasyPoi 2.1.5 版本发布 摘要: jeasypoi 功能如同名字easy,主打的功能就是容易,让一个没见接触过poi的人员 就可以方便的写出Excel导 ...

  6. JSON工具类的构建(前端版本)

    前言 在前后端交互的选择上,之前一直采用的是模板引擎(因为我只负责后端). 而这次的一个算是作业吧,前后端都是我,所以就研究了一下JSON交互在java web的应用(主要是前端). 优缺点 因为我是 ...

  7. utils部分--一些通用的工具类封装

    1.简介 utils部分是对一些常用的工具类进行简单的封装,使用起来比较方便.这里列举常用的一些. 2.ContextUtils使用 主要封装了网络判断.一些方法解释如下: ? 1 2 3 4 5 6 ...

  8. JEasyPoi 2.1.4 (Jeecg订制) 版本发布,Excel 和 Word 简易工具类

    JEasyPoi 2.1.4 (jeecg订制)版本发布,EasyPoi Excel 和 Word 简易工具类 easypoi 功能如同名字easy,主打的功能就是容易,让一个没见接触过poi的人员 ...

  9. 快速创建SpringBoot2.x应用之工具类自动创建web应用、SpringBoot2.x的依赖默认Maven版本

    快速创建SpringBoot2.x应用之工具类自动创建web应用简介:使用构建工具自动生成项目基本架构 1.工具自动创建:http://start.spring.io/ 2.访问地址:http://l ...

  10. liferay总结的通用的工具类

    在写增删改查的时候,自己动手写了几个通用的工具类,这几个通用的工具类也是基于API写的 第一个是liferay中的分页.跟我们做普通的web开发,分页是一样的首先需要建立一个分页的实体的类 packa ...

随机推荐

  1. CANoe工具的安装

    CANoe是德国Vector公司为汽车总线的开发而设计的一款总线开发环境,全称叫CAN open environment,用于分析和模拟CAN(Controller Area Network)和LIN ...

  2. 衔尾法解决当无法使用空闲中断以及DMA中断时配置DMA接收串口不定长数据

    [Ooonly新人贴]记录工作中遇到的问题,话不多说先上干货 问题:类似K线与蓝牙接收部门模块,要求由原来的接收串口中断改为DMA接收.据说要用到空闲中断与DMA中断,但是经仿真发现DMA每完成传输一 ...

  3. 蔬菜识别系统Python+TensorFlow+Django+卷积神经网络算法

    一.介绍 蔬菜识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法.并通过对数据集进行训练,最后得到一个识别精度较高的模型.并基于Django框架,开 ...

  4. The content of element type “web-app“ must match 解决方法

    报错原因 ‍ 问题描述 : 在创建 SpringMVC 时 , 选用 idea 的 webapp 模板来创建 , xml 配置文件中进行配置时发现提示警告 警告如下: ‍ ​ ​ 这错误大概的意思就是 ...

  5. 从2PC和容错共识算法讨论zookeeper中的Create请求

    最近在读<数据密集型应用系统设计>,其中谈到了zookeeper对容错共识算法的应用.这让我想到之前参考的zookeeper学习资料中,误将容错共识算法写成了2PC(两阶段提交协议),所以 ...

  6. 记一次DNS问题排查

    一.问题:域名flow.nzkong.com解析很慢: 排查过程 抓包分析:tcpdump -i eth0 -n -s 500 port domain 1 14:40:44.548553 IP 10. ...

  7. MySQL 存储引擎 InnoDB 内存结构之更改缓冲区

    更改缓冲区(Change Buffer)是一种特殊的数据结构,用于缓存不在缓冲池中的二级索引(secondary index)页的更改.可能来自于INSERT.UPDATE或DELETE操作(数据操作 ...

  8. linux grep基本用法--九五小庞

    通过此语句可以查询一个文件或者当前目录下所有文件中包含exception和error的文件 grep -E -i "((exception)|(error))" * 1.查找文件中 ...

  9. 从GaussDB(DWS)的技术演进,看数据仓库的积淀与新生

    摘要:随着云计算的兴起和渗透,云数仓成为了数仓技术演进的新阶段,并且逐渐成为了众多企业的共同选择. 本文分享自华为云社区<从GaussDB(DWS)的技术演进,看数据仓库的积淀与新生>,作 ...

  10. CPython, Pypy, MicroPython...还在傻傻分不清楚?

    哈喽大家好,我是咸鱼 当我们说 Python 时,通常指的是官方实现的 CPython 但还有很多比如 Pypy.Jython.MicroPython.Brython.RustPython 等 &qu ...