欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-06-26 14:14:40
目录mybatis generator 获取不到字段注释oracle 数据库mysql 数据库mybatis generator 获取不到字段注释环境限制,暂时只提供oracle和mysql的解决方法...

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生成数据表中注释

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 Generator 获取不到字段注释的解决

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