您现在的位置是:网站首页 > 代码编程 > 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项目,诡异,,,如果后面我找到问题原因了,会再写文章做详细分析)。
在网上找了一圈,也没有发现什么好的解决方案,不过倒是看到了另外一种思路:不使用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项目中利用redis + lua脚本简单实现分布式锁
- SSI框架基础整合搭建图文教程
- SpringMVC返回JSON数据时日期格式化问题
- Spring Boot配置Druid数据源和使用教程
- spring框架返回json数据null转空字符串
- 《Spring技术内幕:深入解析Spring架构与设计原理-第2版》电子书免费下载
- Method com/mchange/v2/c3p0/impl/NewProxyPreparedStatement.isClosed()Z is abstract
- Unable to create a Configuration, because no Bean Validation provider could be found. Add a provider like Hibernate Validator (RI) to your classpath.
- java.lang.NoSuchMethodError: javax.validation.BootstrapConfiguration.getClockProviderClassName()Ljava/lang/String
- springmvc + spring + mybatis整合搭建图文教程
标签云
猜你喜欢
- IntelliJ IDEA 2019.2已经可以利用补丁永久破解激活了
- IntelliJ IDEA 2019.3利用补丁永久破解激活教程
- IntelliJ IDEA高版本最灵活的永久破解激活方法(含插件激活,时长你说了算)
- Jetbrains全家桶基于ja-netfilter的最新破解激活详细图文教程
- IntelliJ IDEA 2022.1永久破解激活教程(亲测可用,持续更新)
- 分享几个正版 IntelliJ IDEA 激活码(破解码、注册码),亲测可用,持续更新
- ja-netfilter到底需不需要mymap,2021.3.2版本激活失效?
- 如何激活idea2022.1及以上版本中的插件(亲测可用)
- 【史上最全】IntelliJ IDEA最新2022.1版本安装和激活视频教学(含插件)
- IntelliJ IDEA 2022.2 版本最新2099年永久激活方法,亲测可用,也可以开启新UI了。
站点信息
- 网站程序:spring + freemarker
- 主题模板:《今夕何夕》
- 文章统计:篇文章
- 标签管理:标签云
- 微信公众号:扫描二维码,关注我们