您现在的位置是:网站首页 > 代码编程 > JAVA开发JAVA开发

【原】springmvc+mybatsi-generator生成不了字段注释的解决方案

不忘初心 不忘初心 2020-10-08 围观() 评论() 点赞() JAVA开发

简介:在我早期搭建我的个人博客的时候,由于当时比较空闲,所以就没有使用mybatis-generator框架来生成mybatis文件,都还是自己一个个的亲手写,这次重构的时候,就想着将它框架集成进去,但也不知道为了点儿啥,就是生成不了mysql表字段的注释。

在我早期搭建我的个人博客的时候,由于当时比较空闲,所以就没有使用mybatis-generator框架来生成mybatis文件,都还是自己一个个的亲手写,这次重构的时候,就想着将它框架集成进去,但也不知道为了点儿啥,就是生成不了mysql表字段的注释。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

<generatorConfiguration>
<!--导入属性配置 -->
<!--<properties resource="jdbc.properties"/>-->
<!--指定特定数据库的jdbc驱动jar包的位置 -->
<!--<classPathEntry location="E:\repository\mysql\mysql-connector-java\5.1.34\mysql-connector-java-5.1.34.jar"/>-->
<context id="Mysql" targetRuntime="MyBatis3Simple" defaultModelType="flat">
<!--<property name="beginningDelimiter" value="`"/>
<property name="endingDelimiter" value="`"/>-->

<!--<plugin type="tk.mybatis.mapper.generator.MapperPlugin">
<property name="mappers" value="tk.mybatis.mapper.common.Mapper,tk.mybatis.mapper.common.MySqlMapper"/>
<property name="caseSensitive" value="true"/>
</plugin>-->

<plugin type="org.mybatis.generator.plugins.LombokPlugin" >
<property name="hasLombok" value="true"/>
</plugin>
<!-- optional,旨在创建class时,对注释进行控制 -->
<!--<commentGenerator>
<property name="suppressDate" value="true"/>
<property name="suppressAllComments" value="true"/>
<property name="addRemarkComments" value="true"/>
</commentGenerator>-->

<!-- 使用自定义的插件 -->
<commentGenerator type="com.wolffy.jwcz.dao.plugin.MyCommentGenerator">
</commentGenerator>
<!-- 数据库连接 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://127.0.0.1:3306/jwcz?useUnicode=true&characterEncoding=utf8&useSSL=true"
userId="root"
password="root">

<property name="remarksReporting" value="true"/>
</jdbcConnection>
<!-- 非必需,类型处理器,在数据库类型和java类型之间的转换控制-->
<javaTypeResolver>
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<!--生成Model类存放位置-->
<javaModelGenerator targetPackage="com.wolffy.jwcz.dao.entity" targetProject="dao/src/main/java">
<!--<property name="enableSubPackages" value="true"/>
<property name="trimStrings" value="true"/>
<property name="rootClass" value="com.wolffy.jwcz.dao.base.BaseEntity"/>-->

</javaModelGenerator>
<!--生成Mapper映射文件存放位置-->
<sqlMapGenerator targetPackage="mapper" targetProject="dao/src/main/resources">
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<!--生成Mapper接口存放位置-->
<javaClientGenerator targetPackage="com.wolffy.jwcz.dao.mapper" targetProject="dao/src/main/java" type="XMLMAPPER">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<!--生成对应表及类名-->
<table tableName="article" domainObjectName="Article"
enableCountByExample="false"
enableUpdateByExample="false"
enableDeleteByExample="false"
enableSelectByExample="false"
selectByExampleQueryId="false"
/>

</context>
</generatorConfiguration>

我使用的mybatis-generator框架是1.3.6版本,上面是我的generatorConfig.xml配置文件,这个配置文件是我从其他项目拷贝过来的,除了修改数据库信息以外,并没有其他改动。

平时使用的时候,我都是直接通过maven插件的方式运行的,都能正确生成javabean的字段注释,但是在这个项目运行的时候,就是生成不了,就算是将注释配置打开,生成的也都是框架本身自带的一堆英文,debug了一圈,发现它就是不走生成自定义注释的那段代码,百思不得其解(唯一不一样的地方,就在于正常的是springboot项目,而我这个是springmvc项目,诡异,,,如果后面我找到问题原因了,会再写文章做详细分析)。

springmvc+mybatsi-generator生成不了字段注释的解决方案

在网上找了一圈,也没有发现什么好的解决方案,不过倒是看到了另外一种思路:不使用maven插件方式,自定义一个CommentGenerator,最终问题得到了解决。。。

1、自定义一个CommentGenerator;

package com.wolffy.jwcz.dao.plugin;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;
import org.mybatis.generator.api.IntrospectedColumn;
import org.mybatis.generator.api.IntrospectedTable;
import org.mybatis.generator.api.dom.java.Field;
import org.mybatis.generator.api.dom.java.InnerClass;
import org.mybatis.generator.api.dom.java.Method;
import org.mybatis.generator.internal.DefaultCommentGenerator;
/**
* 自定义注释生成器
* Created by SongFei on 2020/09/21.
*/

public class MyCommentGenerator extends DefaultCommentGenerator {
private Properties properties;
private Properties systemPro;
private boolean suppressDate;
private boolean suppressAllComments;
private String currentDateStr;
public MyCommentGenerator() {
super();
properties = new Properties();
systemPro = System.getProperties();
suppressDate = false;
suppressAllComments = false;
currentDateStr = (new SimpleDateFormat("yyyy-MM-dd")).format(new Date());
}
public void addFieldComment(Field field, IntrospectedTable introspectedTable,
IntrospectedColumn introspectedColumn)
{
if (suppressAllComments) {
return;
}
StringBuilder sb = new StringBuilder();
field.addJavaDocLine("/**");
sb.append(" * ");
sb.append(introspectedColumn.getRemarks());
field.addJavaDocLine(sb.toString().replace("\n", " "));
field.addJavaDocLine(" */");
}
public void addFieldComment(Field field, IntrospectedTable introspectedTable) {
}
public void addGeneralMethodComment(Method method, IntrospectedTable introspectedTable) {
}
public void addGetterComment(Method method, IntrospectedTable introspectedTable,
IntrospectedColumn introspectedColumn)
{
}
public void addSetterComment(Method method, IntrospectedTable introspectedTable,
IntrospectedColumn introspectedColumn)
{
}
public void addClassComment(InnerClass innerClass, IntrospectedTable introspectedTable, boolean markAsDoNotDelete) {
}
public void addClassComment(InnerClass innerClass, IntrospectedTable introspectedTable) {
}
}

2、在配置文件中引入自定义的CommentGenerator(上面的generatorConfig.xml中已经写了,这里不再重复);

3、写一个main方法,运行自定义的CommentGenerator;

package com.wolffy.jwcz.dao;
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;
/**
* 快速生成mybatis配置文件
* Created by SongFei on 2020/09/21.
*/

public class MybatisGenerator {
public static void main(String[] args) {
MybatisGenerator generator = new MybatisGenerator();
System.out.println(System.getProperty("user.dir"));
System.out.println(generator.getClass().getResource("/").getPath());
generator.run();
}
public void run() {
try {
InputStream resourceAsStream = this.getClass().getClassLoader().getResourceAsStream("generatorConfig.xml");
List<String> warnings = new ArrayList<>();
ConfigurationParser parser = new ConfigurationParser(warnings);
Configuration config = parser.parseConfiguration(resourceAsStream);
DefaultShellCallback callback = new DefaultShellCallback(true);
MyBatisGenerator generator = new MyBatisGenerator(config, callback, warnings);
generator.generate(null);
for (String warning : warnings) {
System.err.println(">" + warning);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}

springspringmvcmybatis-generator

看完文章,有任何疑问,请加入群聊一起交流!!!

很赞哦! ()

文章评论

  • 请先说点什么
    人参与,条评论

请使用电脑浏览器访问本页面,使用手机浏览器访问本页面会导致下载文件异常!!!

雨落无影

关注上方公众号,回复关键字【下载】获取下载码

用完即删,每次下载需重新获取下载码

若出现下载不了的情况,请及时联系站长进行解决

站点信息

  • 网站程序:spring + freemarker
  • 主题模板:《今夕何夕》
  • 文章统计:篇文章
  • 标签管理标签云
  • 微信公众号:扫描二维码,关注我们