1.项目结构

1.pom文件中的引入

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.4.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com</groupId><artifactId>remarks</artifactId><version>0.0.1-SNAPSHOT</version><name>remarks</name><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-core</artifactId><version>1.3.7</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope><exclusions><exclusion><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId></exclusion></exclusions></dependency><dependency><groupId>io.swagger</groupId><artifactId>swagger-annotations</artifactId><version>1.6.0</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.2</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

2.自动生成的配置文件,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"/><!--生成mapper.xml时覆盖原文件--><plugin type="org.mybatis.generator.plugins.UnmergeableXmlMappersPlugin"/><commentGenerator type="com.remarks.CommentGenerator"><!-- 是否去除自动生成的注释 true:是 : false:否 --><property name="suppressAllComments" value="true"/><property name="suppressDate" value="true"/><property name="addRemarkComments" value="true"/></commentGenerator><jdbcConnection driverClass="${jdbc.driverClass}"connectionURL="${jdbc.connectionURL}"userId="${jdbc.userId}"password="${jdbc.password}"><!--解决mysql驱动升级到8.0后不生成指定数据库代码的问题--><property name="nullCatalogMeansCurrent" value="true"/></jdbcConnection><!--model生成后所在路径--><javaModelGenerator targetPackage="com.remarks.model" targetProject="src\main\java"/><!--mapper生成后所在路径--><sqlMapGenerator targetPackage="com.remarks.mapper" targetProject="src\main\resources"/><!--xml生成后所在路径--><javaClientGenerator type="XMLMAPPER" targetPackage="com.remarks.mapper"targetProject="src\main\java"/><!--生成表tableName设为--><table tableName="regions"><generatedKey column="id" sqlStatement="MySql" identity="true"/></table></context>
</generatorConfiguration>

3.数据库连接信息,也可直接写入上面文件中,generator.properties

jdbc.driverClass=com.mysql.cj.jdbc.Driver
jdbc.connectionURL=jdbc:mysql://*****:3306/***?useUnicode = true&allowMultiQueries=true&serverTimezone=GMT%2b8
jdbc.userId=root
jdbc.password=********

4.注释/注解自定义生成  CommentGenerator.java

package com.remarks;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.api.dom.java.TopLevelClass;
import org.mybatis.generator.internal.DefaultCommentGenerator;
import org.mybatis.generator.internal.util.StringUtility;import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import java.util.Properties;/*** 自定义注释生成器** @author ben.deng*/
public class CommentGenerator extends DefaultCommentGenerator {private boolean addRemarkComments = false;/*** 生成model类的注释** @param topLevelClass* @param introspectedTable*/@Overridepublic void addModelClassComment(TopLevelClass topLevelClass, IntrospectedTable introspectedTable) {Map<String, String> map = System.getenv();// 获取用户名String userName = map.get("USERNAME");SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss aa");topLevelClass.addJavaDocLine("/**");topLevelClass.addJavaDocLine("*@description:: $discription$");topLevelClass.addJavaDocLine("*@author:" + userName);topLevelClass.addJavaDocLine("*@time:" + simpleDateFormat.format(new Date()));topLevelClass.addJavaDocLine(" */");}private static final String EXAMPLE_SUFFIX = "Example";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"));}/*** 给字段添加swagger的注释*/@Overridepublic void addFieldComment(Field field, IntrospectedTable introspectedTable,IntrospectedColumn introspectedColumn) {String remarks = introspectedColumn.getRemarks();//判断数据库中的字段是否允许为空boolean nullIs = introspectedColumn.isNullable();if (addRemarkComments) {addFieldJavaDoc(field, remarks);//数据库中特殊字符需要转义if (remarks.contains("\"")) {remarks = remarks.replace("\"", "'");}//给model的字段添加swagger注解if (!nullIs) {field.addJavaDocLine("@ApiModelProperty(required = true,value = \"" + remarks + "\")");} else {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));}}
}

5.代码执行入口  Generator.java

package com.remarks;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;import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;/*** 代码自动生成入口** @author ben.deng*/
public class Generator {public static void main(String[] args) throws Exception {//执行过程中的警告信息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);}}
}

以上就是全部代码,感觉麻烦可以下载写好的模板

https://download.csdn.net/download/xiaosemei/12929726

【SpringBoot】mybatis 自动生成swagger注解,及普通查询sql相关推荐

  1. 简单的利用IDEA搭建SpringBoot+Maven+Mybatis+自动生成代码

    最近在系统的学习SpringBoot框架,并且要用该框架做个项目--网上也大大小小看了很多教程,感觉很多写文章的人都不太负责任,只知道搬运,大概都没有实际操作过,问题也是有很多,所以自己写一篇文章记录 ...

  2. 【MyBatis】MyBatis自动生成代码之查询爬坑记

    前言 项目使用SSM框架搭建Web后台服务,前台后使用restful api,后台使用MyBatisGenerator自动生成代码,在前台使用关键字进行查询时,遇到了一些很宝贵的坑,现记录如下.为展示 ...

  3. 使用mybatis自动生成指定规则的编号

    一.要求 1.如果表中还未有菜单,添加一级菜单,编号为:'300' 2.继续添加一级菜单,编号为:一级菜单最大编号 + 1,如'301','302','303' 3.添加子级菜单:编号 = 父级编号 ...

  4. Mybatis自动生成实体类等代码

    Mybatis自动生成实体类等代码 具体步骤 具体步骤 在本机随便找个目录存放以下文件,如图(mybatis-generator-core-1.3.5.jar 和 mysql-connector-ja ...

  5. 用Swashbuckle给ASP.NET Core的项目自动生成Swagger的API帮助文档

    Swagger是一个描述RESTful的Web API的规范和框架.如果使用ASP.NET的话,可以用Swashbuckle来自动生成Swagger,具体参考如何使 WebAPI 自动生成漂亮又实用在 ...

  6. Spring+SpringMVC+Mybatis(开发必备技能)04、mybatis自动生成mapper_dao_model(包含工具与视频讲解) 纯绿色版本、配套使用视频,100%运行成功

    Spring+SpringMVC+Mybatis(开发必备技能) 04.mybatis自动生成mapper_dao_model(包含工具与视频讲解) 纯绿色版本.配套使用视频,100%运行成功 百度网 ...

  7. 自动生成python接口文档_Django自动生成Swagger接口文档

    Django自动生成Swagger接口文档 1. 前言 当接口开发完成,紧接着需要编写接口文档.传统的接口文档通常都是使用Word或者一些接口文档管理平台进行编写,但此类接口文档维护更新比较麻烦,每次 ...

  8. Mybatis自动生成代码插件generator

    Mybatis自动生成代码插件generator 1.pom maven依赖 <dependencies><dependency><groupId>org.myba ...

  9. Mybatis自动生成的Example类的使用与解析

    在上篇文章我有讲到mybatis如何自动生成我们所需的dao代码,今天我们把上篇文章遗留的问题给大家讲解一下.个人拙见,欢迎补充. 上篇文章中我有说过利用Mybatis自动生成的Example类可以满 ...

最新文章

  1. 秒懂QPS、TPS、PV、UV、GMV、IP、RPS!
  2. 页面间传输中文的乱码解决方法
  3. RMAN删除归档日志不释放问题
  4. Vue学习(增删改查、ES6模块化概念)-学习笔记
  5. 文献阅读(part3)--Self-taught Clustering
  6. java栈 类 堆_详细介绍Java中的堆和栈
  7. 吴恩达深度学习 —— 4.3 核对矩阵的维数
  8. jQuery学习(六)—jQuery对象的创建
  9. VASP服务器第一次安装各种软件(上)
  10. m0单片机io口_51单片机50个例程代码
  11. 8、共射放大电路一般性质与放大电路的直流偏移
  12. Ubuntu的下载安装教程--本人亲测
  13. cgcs2000大地坐标系地图_测绘人必备!从地方坐标系到2000国家大地坐标系的转换...
  14. Could not set property ‘XXX‘ of ‘class com.entity.XXX‘
  15. HaaS EDU K1 快速搭建Python开发环境
  16. 教程:游戏LOGO=游戏符号+名字
  17. message from server: “Host ‘DESKTOP-FAJUM7V‘ is not allowed to connect to this MySQL server“
  18. springboot+redistemplate 集群配置
  19. Admixture使用说明文档cookbook
  20. 怎么用手机设置(中继器)WIFI信号放大器

热门文章

  1. TIB --- FS
  2. sqlserver 删除表中重复的数据
  3. 不在985,但这些专业全国“第一”
  4. js中Boolean值为false和true的情况:
  5. 电子纸驱动IC停在BUSY状态的处理办法(大连佳显)
  6. 工作备忘录的生成(链表)
  7. vs试用版到期后使用微软邮箱激活
  8. 做最好的日期控件,My97 DatePicker
  9. 使用Tushare进行金融时间序列分析研究
  10. 离散余弦变换 - Discrete Cosine Transform