SpringBoot中MBG的使用
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的使用相关推荐
- SpringBoot图文教程8 — SpringBoot集成MBG「代码生成器」
有天上飞的概念,就要有落地的实现 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例都敲一遍 先赞后看,养成习惯 SpringBoot 图文教程系列文章目录 SpringBoot图文教程1「概念+ ...
- 在SpringBoot中使用Spring Session解决分布式会话共享问题
在SpringBoot中使用Spring Session解决分布式会话共享问题 问题描述: 每次当重启服务器时,都会导致会员平台中已登录的用户掉线.这是因为每个用户的会话信息及状态都是由session ...
- SpringBoot 中 JPA 的使用
前言 第一次使用 Spring JPA 的时候,感觉这东西简直就是神器,几乎不需要写什么关于数据库访问的代码一个基本的 CURD 的功能就出来了.下面我们就用一个例子来讲述以下 JPA 使用的基本操作 ...
- 难以想象SpringBoot中的条件注解底层居然是这样实现的
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源 | https://urlify.cn/bm2qqi Spr ...
- 面试:SpringBoot中的条件注解底层是如何实现的?
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源 | https://urlify.cn/bm2qqi Spr ...
- springboot yml怎么建常量_【Java】SpringBoot 中从application.yml中获取自定义常量
由于这里我想通过java连接linux,connection连接需要host.port.username.password及其他路径等等.不想每次修改的时候都去改源文件,所以想写在applicatio ...
- Springboot中给图片添加文字水印
Springboot中给图片添加文字水印 工作中遇到给图片添加文字水印的需求,记录下来方便之后查阅 需求内容: 给一张图片添加指定文字水印,使一张图片上有多个水印内容,并且设定一个水印开关,可指定是否 ...
- 你知道如何在springboot中使用redis吗
特别说明:本文针对的是新版 spring boot 2.1.3,其 spring data 依赖为 spring-boot-starter-data-redis,且其默认连接池为 lettuce ...
- WebSocket的故事(六)—— Springboot中,实现更灵活的WebSocket
概述 WebSocket的故事系列计划分五大篇六章,旨在由浅入深的介绍WebSocket以及在Springboot中如何快速构建和使用WebSocket提供的能力.本系列计划包含如下几篇文章: 第一篇 ...
最新文章
- 还在使用 SimpleDateFormat?你的项目崩没?
- centos6 安装 mantisbt-1.2.8 —— (3)Linux系统下yum源配置(Centos 6)
- nginx介绍(三) - 虚拟主机
- Linux应用服务导致系统负载过高问题排查
- linux打印mysql堆栈_第25问:MySQL 崩溃了,打印了一些堆栈信息,怎么读?
- 信息学奥赛C++语言:质因数分解
- (转载)Hadoop map reduce 过程获取环境变量
- python斐波那契数列函数,python—函数进阶-斐波那契数列
- 华为p40pro如何升级鸿蒙,可以升级到鸿蒙OS的四款华为手机,相信都没有后悔入手!...
- CSS深入理解之border
- linux下删除编译安装的软件,Linux 中卸载编译安装的软件
- WinForm应用实战开发指南 - 快速开发一个WinForm应用系统
- 天正安装autocad启动失败_天正cad启动失败
- Linux实验四——Linux用户和用户组管理
- 史上最简单的教程——“21天”自学C语言
- AI上推荐 之 协同过滤
- Ubuntu Kylin操作系统介绍及常用命令的使用
- Traingview MACD自定义指标颜色修改
- openal for linux,在Linux下使用Openal来播放声音类
- VirtualBox for macOS NS_ERROR_FAILURE (0x80004005) 问题解决记录
热门文章
- 通过DT10检测内存泄漏问题
- pyecharts可视化:爱情公寓==爱情公墓?
- LeetCode 买卖股票的最佳时机 6道题1个解法总结
- Linux下QT程序的发布及相关问题
- Jetson Orin(Ubuntu20.04)安装NoMachine和Jtop
- 公司应该如何设计网站官网首页?
- 工程打包是什么意思_建设工程发包是什么意思,发包有什么规定?
- 蚂蚁云原生应用运行时的探索和实践 - ArchSummit 上海
- react native极光推送android和ios证书申请
- java微信退款解密,微信退款-异步通知 报文解密