文档章节

Mybatis实践--Mybatis Generator 获取不到字段注释 

spinachgit
 spinachgit
发布于 2018/03/21 13:18
字数 906
阅读 184
收藏 0

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>

其它相关

 

原始实例

1 目录

2 generate.bat

java -jar mybatis-generator-core-1.3.7.jar -configfile generator_oracle.xml -overwrite

 

3 generator_oracle.xml

<?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>
    <!-- 在项目中会自动找到 -->
	<classPathEntry location="ojdbc14-10.2.0.4.0.jar" />
	<!--
	<properties resource="D:\\workspace-demo\\mybatis-generator-core\\bin\\config_oracle.properties" />
	-->
	<context id="context1">
		<!--oracle.jdbc.driver.OracleDriver or com.mysql.jdbc.Driver  -->
		<jdbcConnection driverClass="oracle.jdbc.driver.OracleDriver" connectionURL="jdbc:oracle:thin:@192.168.5.11:1521:ORCL" 
		userId="USER"   password="PASS">  
    </jdbcConnection>  
		<!-- model -->
		<javaModelGenerator targetPackage="com.spinach.business.test.entity" targetProject=".">
			<property name="enableSubPackages" value="true" />
			<property name="trimStrings" value="true" />
		</javaModelGenerator>
  
  		<!-- mapper -->
		<sqlMapGenerator targetPackage="com.spinach.business.test.dao" targetProject=".">
			<property name="enableSubPackages" value="true" />
			<property name="methodNameCalculator" value="extended" />
		</sqlMapGenerator>  

  		<!-- dao -->
		<javaClientGenerator type="XMLMAPPER" targetPackage="com.spinach.business.test.dao" targetProject=".">
			<property name="enableSubPackages" value="true" />
		</javaClientGenerator>
		
		<!--  schema="dbname" 网络上说:schema是数据名,加了反而不能生成。 -->
		<table tableName="t_blxx_tbl" enableCountByExample="false"  enableUpdateByExample="false"  enableUpdateByPrimaryKey="false"
           enableDeleteByExample="false" enableDeleteByPrimaryKey="false" enableSelectByPrimaryKey="false" enableSelectByExample="false" selectByExampleQueryId="false" 
           enableInsert="true" 
           >
          <property name="rootClass" value="com.spinach.support.spring.mybatis.entity.MybatisEntity" />
    </table>
		
	</context>
</generatorConfiguration>  

 

 

© 著作权归作者所有

spinachgit
粉丝 10
博文 259
码字总数 258336
作品 0
亳州
私信 提问
MyBatis-Generator最佳实践

最近使用MyBatis开发项目,为了快速开发,发现了一个可快速生成mapper类和mapper配置文件及Model的插件-MyBatis-Generator,总结下该插件的使用及最佳实践. 需求 为数据库中的表teacher生成Tea...

steven
2016/11/16
70
2
mybatis-generator相关问题

1.[Table configuration with catalog null, schema ORCL, and table EMP did not resolve to any tables] 在配置generatorConfig.xml文件时若写了 这里的schema去掉 jdbc:oracle:thin:@127.......

dmrs
2015/12/19
147
0
详细讲解Maven插件MyBatis-Generator以及如何修改源码

1、常用使用方式: mybatis-generator有三种用法:命令行、eclipse插件、maven插件。个人觉得maven插件最方便,可以在eclipse/intellij idea等ide上可以通用。 命令行: java -jar mybatis-...

woter
2016/09/28
150
0
mysql8+mybatis-plus3.1自动生成带lombok和swagger和增删改查接口

mybatis-dsc-generator 还在为写swagger而烦恼吗?还在为忘记写注释而烦恼吗?还在为写简单的api接口而烦恼吗?mybatis-dsc-generator完美集成lombok,swagger的代码生成工具,让你不再为繁琐...

边鹏_尛爺鑫
04/11
0
2
SpringBoot 自动代码生成三层

前言 虽然mybatis已经有了代码生成,但是对于SpringBoot 项目来说生成的还是需要改动,而且也没得逻辑层,和控制层。但是这些东西是逃避不了,所以我就针对单表,做了一个代码生成器。 myba...

边鹏_尛爺鑫
2018/07/10
0
1

没有更多内容

加载失败,请刷新页面

加载更多

Flutter移动端实战手册

该文章属于<简书 — 刘小壮>原创,转载请注明: <简书 — 刘小壮> https://www.jianshu.com/p/d27c1f5ee3ff iOS接入Flutter 在进行iOS和Flutter的混编时,iOS比Android的接入方式略复杂,但也...

刘小壮
9分钟前
0
0
测试环境项目一键部署

git项目测试环境一键部署脚本 #!/bash/sh pid=`ps -ef | grep 'user_demo.jar' | grep -v grep | awk '{print $2}'` kill -9 $pid #跳转到git clone下目录 cd /home/apple/userdemo/ #拉取最......

ccman996
12分钟前
0
0
应用框架(spring-boot参数配置与使用)

这很耳东先生
18分钟前
0
0
使用SecureCRT从windows上传文件到Linux

点击File,然后选择SFTP,打开SFTP,然后进行下列操作。 1.指定文件所在路径 lcd E:\ 2.查看当前windows文件所在路径 lpwd 3.指定linux下文件上传路径 cd /usr/local 4.查询当前linux文件上传...

大雁南飞了
21分钟前
1
0
前后端分离-前端搭建(Vue)(3)加入Element和axios

继续上篇博客的Vue刚刚搭建完 , https://my.oschina.net/u/4116654/blog/3064431 这次我们来把Element 和axios弄好 首先先安装Element 下载好了之后 在src目录下的main.js里去添加Element的...

咸鱼-李y
31分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部