SpringBoot中MBG的使用

转自:博客园:有目标的人在奔跑,没目标的人在流浪……

1、添加引用

<dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.4.6</version>
</dependency>
<dependency><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-core</artifactId><version>1.3.3</version>
</dependency>
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.15</version>
</dependency>

2、编写配置文件

2.1、在 resources 目录下添加 generator.properties

jdbc.driverClass=com.mysql.cj.jdbc.Driver
jdbc.connectionURL=jdbc:mysql://localhost:3306/dbName?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
jdbc.userId=root
jdbc.password=123456

2.2、在 resources 目录下添加 generatorConfig.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfigurationPUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN""http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration><properties resource="generator.properties" /><context id="MySqlContext" targetRuntime="MyBatis3"defaultModelType="flat"><property name="beginningDelimiter" value="`" /><property name="endingDelimiter" value="`" /><property name="javaFileEncoding" value="UTF-8" /><!-- 为模型生成序列化方法 --><plugin type="org.mybatis.generator.plugins.SerializablePlugin" /><!-- 为生成的Java模型创建一个toString方法 --><plugin type="org.mybatis.generator.plugins.ToStringPlugin" /><!-- 指定调用 com.example.demo.CommentGenerator 生成 --><commentGeneratortype="com.example.demo.CommentGenerator"><!-- 是否去除自动生成的注释 true:是 : false:否 --><property name="suppressAllComments" value="true" /><property name="suppressDate" value="true" /><property name="addRemarkComments" value="true" /></commentGenerator><!-- 从 generator.properties 中获取数据库连接配置 --><jdbcConnection driverClass="${jdbc.driverClass}"connectionURL="${jdbc.connectionURL}" userId="${jdbc.userId}"password="${jdbc.password}"><!--解决mysql驱动升级到8.0后不生成指定数据库代码的问题 --><property name="nullCatalogMeansCurrent" value="true" /></jdbcConnection><!--指定Model包名及存放位置 --><javaModelGeneratortargetPackage="com.example.demo.entity"targetProject=".\src\main\java" /><!--生成Dao类存放位置 --><sqlMapGeneratortargetPackage="com.example.demo.mapper"targetProject=".\src\main\resources" /><!--生成映射文件存放位置 --><javaClientGenerator type="XMLMAPPER"targetPackage="com.example.demo.mapper"targetProject=".\src\main\java" /><!--生成指定表映射,生成全部表tableName设为% --><table tableName="%"><generatedKey column="id" sqlStatement="MySql"identity="true" /></table></context>
</generatorConfiguration>

3、编写功能类

3.1、编写生成类

package com.example.demo;import java.util.Properties;import org.mybatis.generator.api.IntrospectedColumn;
import org.mybatis.generator.api.IntrospectedTable;
import org.mybatis.generator.api.dom.java.CompilationUnit;
import org.mybatis.generator.api.dom.java.Field;
import org.mybatis.generator.api.dom.java.FullyQualifiedJavaType;
import org.mybatis.generator.internal.DefaultCommentGenerator;
import org.mybatis.generator.internal.util.StringUtility;/*** 自定义注释生成器*/
public class CommentGenerator extends DefaultCommentGenerator {private boolean addRemarkComments = false;private static final String EXAMPLE_SUFFIX = "Mapper";private static final String API_MODEL_PROPERTY_FULL_CLASS_NAME = "io.swagger.annotations.ApiModelProperty";/*** 设置用户配置的参数*/@Overridepublic void addConfigurationProperties(Properties properties) {super.addConfigurationProperties(properties);this.addRemarkComments = StringUtility.isTrue(properties.getProperty("addRemarkComments"));}/*** 给字段添加注释*/@Overridepublic void addFieldComment(Field field, IntrospectedTable introspectedTable,IntrospectedColumn introspectedColumn) {String remarks = introspectedColumn.getRemarks();// 根据参数和备注信息判断是否添加备注信息if (addRemarkComments && StringUtility.stringHasValue(remarks)) {// addFieldJavaDoc(field, remarks);// 数据库中特殊字符需要转义if (remarks.contains("\"")) {remarks = remarks.replace("\"", "'");}// 给model的字段添加swagger注解field.addJavaDocLine("@ApiModelProperty(value = \"" + remarks + "\")");}}/*** 给model的字段添加注释*/private void addFieldJavaDoc(Field field, String remarks) {// 文档注释开始field.addJavaDocLine("/**");// 获取数据库字段的备注信息String[] remarkLines = remarks.split(System.getProperty("line.separator"));for (String remarkLine : remarkLines) {field.addJavaDocLine(" * " + remarkLine);}addJavadocTag(field, false);field.addJavaDocLine(" */");}@Overridepublic void addJavaFileComment(CompilationUnit compilationUnit) {super.addJavaFileComment(compilationUnit);// 只在model中添加swagger注解类的导入if (!compilationUnit.isJavaInterface()&& !compilationUnit.getType().getFullyQualifiedName().contains(EXAMPLE_SUFFIX)) {compilationUnit.addImportedType(new FullyQualifiedJavaType(API_MODEL_PROPERTY_FULL_CLASS_NAME));}}
}

3.2、生成

package com.example.demo;import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.internal.DefaultShellCallback;/*** 用于生产MBG的代码  */
public class Generator {public static void main(String[] args) throws Exception {// MBG 执行过程中的警告信息List<String> warnings = new ArrayList<String>();// 当生成的代码重复时,覆盖原代码boolean overwrite = true;// 读取我们的 MBG 配置文件InputStream is = Generator.class.getResourceAsStream("/generatorConfig.xml");ConfigurationParser cp = new ConfigurationParser(warnings);Configuration config = cp.parseConfiguration(is);is.close();DefaultShellCallback callback = new DefaultShellCallback(overwrite);// 创建 MBGMyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);// 执行生成代码myBatisGenerator.generate(null);// 输出警告信息for (String warning : warnings) {System.out.println(warning);}}
}

运行main方法,生成。

SpringBoot中MBG的使用相关推荐

  1. SpringBoot图文教程8 — SpringBoot集成MBG「代码生成器」

    有天上飞的概念,就要有落地的实现 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例都敲一遍 先赞后看,养成习惯 SpringBoot 图文教程系列文章目录 SpringBoot图文教程1「概念+ ...

  2. 在SpringBoot中使用Spring Session解决分布式会话共享问题

    在SpringBoot中使用Spring Session解决分布式会话共享问题 问题描述: 每次当重启服务器时,都会导致会员平台中已登录的用户掉线.这是因为每个用户的会话信息及状态都是由session ...

  3. SpringBoot 中 JPA 的使用

    前言 第一次使用 Spring JPA 的时候,感觉这东西简直就是神器,几乎不需要写什么关于数据库访问的代码一个基本的 CURD 的功能就出来了.下面我们就用一个例子来讲述以下 JPA 使用的基本操作 ...

  4. 难以想象SpringBoot中的条件注解底层居然是这样实现的

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源 | https://urlify.cn/bm2qqi Spr ...

  5. 面试:SpringBoot中的条件注解底层是如何实现的?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源 | https://urlify.cn/bm2qqi Spr ...

  6. springboot yml怎么建常量_【Java】SpringBoot 中从application.yml中获取自定义常量

    由于这里我想通过java连接linux,connection连接需要host.port.username.password及其他路径等等.不想每次修改的时候都去改源文件,所以想写在applicatio ...

  7. Springboot中给图片添加文字水印

    Springboot中给图片添加文字水印 工作中遇到给图片添加文字水印的需求,记录下来方便之后查阅 需求内容: 给一张图片添加指定文字水印,使一张图片上有多个水印内容,并且设定一个水印开关,可指定是否 ...

  8. 你知道如何在springboot中使用redis吗

    特别说明:本文针对的是新版 spring boot 2.1.3,其 spring data 依赖为 spring-boot-starter-data-redis,且其默认连接池为 lettuce ​  ...

  9. WebSocket的故事(六)—— Springboot中,实现更灵活的WebSocket

    概述 WebSocket的故事系列计划分五大篇六章,旨在由浅入深的介绍WebSocket以及在Springboot中如何快速构建和使用WebSocket提供的能力.本系列计划包含如下几篇文章: 第一篇 ...

最新文章

  1. 还在使用 SimpleDateFormat?你的项目崩没?
  2. centos6 安装 mantisbt-1.2.8 —— (3)Linux系统下yum源配置(Centos 6)
  3. nginx介绍(三) - 虚拟主机
  4. Linux应用服务导致系统负载过高问题排查
  5. linux打印mysql堆栈_第25问:MySQL 崩溃了,打印了一些堆栈信息,怎么读?
  6. 信息学奥赛C++语言:质因数分解
  7. (转载)Hadoop map reduce 过程获取环境变量
  8. python斐波那契数列函数,python—函数进阶-斐波那契数列
  9. 华为p40pro如何升级鸿蒙,可以升级到鸿蒙OS的四款华为手机,相信都没有后悔入手!...
  10. CSS深入理解之border
  11. linux下删除编译安装的软件,Linux 中卸载编译安装的软件
  12. WinForm应用实战开发指南 - 快速开发一个WinForm应用系统
  13. 天正安装autocad启动失败_天正cad启动失败
  14. Linux实验四——Linux用户和用户组管理
  15. 史上最简单的教程——“21天”自学C语言
  16. AI上推荐 之 协同过滤
  17. Ubuntu Kylin操作系统介绍及常用命令的使用
  18. Traingview MACD自定义指标颜色修改
  19. openal for linux,在Linux下使用Openal来播放声音类
  20. VirtualBox for macOS NS_ERROR_FAILURE (0x80004005) 问题解决记录

热门文章

  1. 通过DT10检测内存泄漏问题
  2. pyecharts可视化:爱情公寓==爱情公墓?
  3. LeetCode 买卖股票的最佳时机 6道题1个解法总结
  4. Linux下QT程序的发布及相关问题
  5. Jetson Orin(Ubuntu20.04)安装NoMachine和Jtop
  6. 公司应该如何设计网站官网首页?
  7. 工程打包是什么意思_建设工程发包是什么意思,发包有什么规定?
  8. 蚂蚁云原生应用运行时的探索和实践 - ArchSummit 上海
  9. react native极光推送android和ios证书申请
  10. java微信退款解密,微信退款-异步通知 报文解密