Mybatis Generator 获取不到字段注释的解决

 更新时间:2021年09月08日 15:04:58   作者:一头磕在键盘上  
这篇文章主要介绍了Mybatis Generator 获取不到字段注释的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

Mybatis Generator 获取不到字段注释

环境限制,暂时只提供Oracle和Mysql的解决方法,其它数据库如果遇到同样问题,原理是一样的,具体就看该数据库应当去配置哪个属性.

解决方法

下面的配置均指的是Mybatis Generator 的配置文件(一般是叫generatorConfig.xml)的配置:

Oracle 数据库

<jdbcConnection driverClass="${driver}"
    connectionURL="{url}" userId="${username}" password="${password}">
    <!-- 针对oracle数据库 -->
    <property name="remarksReporting" value="true"></property>
</jdbcConnection>

MySql 数据库

方法1

<jdbcConnection driverClass="${driver}"
    connectionURL="{url}" userId="${username}" password="${password}">
    <!-- 针对mysql数据库 -->
    <property name="useInformationSchema" value="true"></property>
</jdbcConnection>

方法2

mysql的connectionURL中添加 useInformationSchema=true.大体上就是:

connectionURL="jdbc:mysql://127.0.0.1:3306/test?characterEncoding=UTF-8&useInformationSchema=true"

两种方法任选其一.

详解

MBG访问数据库也是通过JDBC进行,而通过JDBC连接Oracle、Mysql(其它数据库暂不清楚)时,想获取到表及字段注释是需要额外设置一些连接属性的.一般大体上都是如下的代码(以Oracle为例):

Properties props =newProperties();
props.put("remarksReporting","true");//Oracle
dbConn = DriverManager.getConnection(url, props);
DatabaseMetaData dbmd = dbConn.getMetaData();

这样通过JDBC就能获取到表或者字段的注释了.

那么在MBG中怎么设置呢?总不能去改源码吧.其实MBG自身已经提供了解决方法.

我们先来看下MBG连接数据库的代码,可以在org.mybatis.generator.internal.JDBCConnectionFactory中找到:

//以下代码来自Mybatis Generator 1.3.5
/**
 * This constructor is called when there is a JDBCConnectionConfiguration
 * specified in the configuration.
 * 
 * @param config
 */
public JDBCConnectionFactory(JDBCConnectionConfiguration config) {
    super();
    userId = config.getUserId();
    password = config.getPassword();
    connectionURL = config.getConnectionURL();
    driverClass = config.getDriverClass();
    otherProperties = config.getProperties();//注意此行
}
public Connection getConnection()
        throws SQLException {
    Driver driver = getDriver();
    Properties props = new Properties();
    if (stringHasValue(userId)) {
        props.setProperty("user", userId); //$NON-NLS-1$
    }
    if (stringHasValue(password)) {
        props.setProperty("password", password); //$NON-NLS-1$
    }
    props.putAll(otherProperties);//注意此行
    Connection conn = driver.connect(connectionURL, props);
    if (conn == null) {
        throw new SQLException(getString("RuntimeError.7")); //$NON-NLS-1$
    }
    return conn;
}

通过上面代码(尤其是我加了注意此行注释的两行代码)我们可以看到,MBG在建立连接时,是把JDBCConnectionConfiguration中的所有properties给设置进去了.那么显然我们只需要找到在哪配置这些properties就行了.

JDBCConnectionConfiguration对应到XML配置里就是jdbcConnection节点.

再来看看官方的使用文档,官方文档关于jdbcConnection (点击查看) 一节中 <property>子元素的说明:

<property> (0..N) Note: any properties specified here will be added to the properties of the JDBC driver.

那么在配置文件中我们如下改动即可:

<jdbcConnection driverClass="${driver}"
    connectionURL="{url}" userId="${username}" password="${password}">
    <!-- 针对oracle数据库 -->
    <property name="remarksReporting" value="true"></property>
</jdbcConnection>

关于如何生成自定义注释,参见 mybatis-generator自定义注释生成

mybatis-generator生成数据表中注释

1.克隆项目

打jar包

git clone https://github.com/backkoms/mybatis-generator-comments.git

编译打包,install到本地或delopy私服库中均可。

2.修改pom文件

         <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>${plugins-mybatis-generator.version}</version>
                <configuration>
                    <verbose>true</verbose>
                    <overwrite>true</overwrite>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>com.haier.hairy</groupId>
                        <artifactId>mybatis-generator-core</artifactId>
                        <version>1.0.1</version>
                    </dependency>
                </dependencies>
          </plugin>

3.配置对应的解析生成包

<commentGenerator type="org.mybatis.generator.internal.CustomeCommentGenerator">
     <property name="javaFileEncoding" value="UTF-8"/>
     <property name="suppressDate" value="true" />
     <property name="suppressAllComments" value="false" />
</commentGenerator>

执行命令:mvn mybatis-generator:generate

查看执行生成文件

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • MyBatis嵌套查询collection报错:org.apache.ibatis.exceptions.TooManyResultsException

    MyBatis嵌套查询collection报错:org.apache.ibatis.exceptions.TooMany

    本文主要介绍了MyBatis嵌套查询collection报错:org.apache.ibatis.exceptions.TooManyResultsException,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-09-09
  • Spring Security短信验证码实现详解

    Spring Security短信验证码实现详解

    本文主要介绍了Spring Security短信验证码的实现详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-11-11
  • MyBatis-Plus动态返回实体类示例详解

    MyBatis-Plus动态返回实体类示例详解

    这篇文章主要为大家介绍了MyBatis-Plus动态返回实体类示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • IDEA集成MyBatis Generator插件的使用

    IDEA集成MyBatis Generator插件的使用

    这篇文章主要介绍了IDEA集成MyBatis Generator插件的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • IDEA如何添加配置文件到classpath中

    IDEA如何添加配置文件到classpath中

    这篇文章主要介绍了IDEA如何添加配置文件到classpath中,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • ServletContext中常用方法介绍

    ServletContext中常用方法介绍

    本篇文章是对ServletContext中的常用方法进行了详细的分析介绍,需要的朋友参考下
    2013-07-07
  • Spring之Environment类的使用方式

    Spring之Environment类的使用方式

    这篇文章主要介绍了Spring之Environment类的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • 关于各种排列组合java算法实现方法

    关于各种排列组合java算法实现方法

    这篇文章介绍了几种用JAVA实现的排列组合算法,有需要的朋友可以参考一下
    2013-06-06
  • eclipse创建springboot项目的三种方式总结

    eclipse创建springboot项目的三种方式总结

    这篇文章主要介绍了eclipse创建springboot项目的三种方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • tcc分布式事务框架体系解析

    tcc分布式事务框架体系解析

    这篇文章主要为大家介绍了tcc分布式事务框架体系结构的解析说明,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2022-03-03

最新评论