{channel.title!channel.name} - 楚淮公司周东林

mybatis-generator逆向工程生成代码问题总结

此次生成的实体类字段和提供的数据库账号里面表的字段不一致,不是网上说的那个种没有下划线,大小写之类的。而是生成的实体类的字段比表里面多,很多是表里面没有的字段。


使用 generatorConfig.xml 配置文件里面的配置登陆数据库查看表里面没有的字段为何 Model 里面会生成很奇怪。

后来查看表里面所有对象才发现其他账号下面有同名的表,生成的实体类是另外一个用户下面表的实体。

产生此问题的主要原因是因为数据库里多个账号都具备DBA权限,账号下有同名的表导致。

解决方案是在配置文件里面添加 schema 属性:

<table tableName="SYS_YH" schema="zhoudl" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false" />

红色的部分指定生成哪个用户下的表,以前对 ORACLE 数据库不太了解大家在建账号的时候都付乐DBA 权限,数据库公用才会有这个情况发生,我也是百度了好久没找到解决方法,看了 generatorConfig 的配置项才发现这么改,下面给出我的配置信息供参考。

 

<?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="F:\Java\mybatis-generator-1.3.7\ojdbc14.jar" />
 <!-- <classPathEntry location="F:\Java\mybatis-generator-1.3.7\mysql-connector-java-5.1.38-bin.jar" /> --> 
 <context id="DB2Tables" defaultModelType="flat" targetRuntime="MyBatis3">
  <plugin type="org.mybatis.generator.plugins.SerializablePlugin"></plugin> 
 <!-- 生成注释配置 -->  
 <commentGenerator type="">   
 <!-- 是否取消注释 -->   
  <property name="suppressAllComments" value="true" />
 <!-- 数据库注释支持 -->
  <property name="addRemarkComments" value="true"/>
 <!-- 时间格式设置 -->
  <property name="dateFormat" value="yyyy-MM-dd HH:mm:ss"/>
 </commentGenerator>
  <!-- 数据库链接URL、用户名、密码 -->
 <!--<jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/jeecmsv6" userId="root" password="123456">-->
  <jdbcConnection
   driverClass="oracle.jdbc.driver.OracleDriver"
   connectionURL="jdbc:oracle:thin:@21x.64.xx.xx:1521:orcl"
   userId="zhoudl"
   password="xxxxxxx">
  </jdbcConnection>
  <!-- 数值类型数据是否全部使用BigDecimal类型 -->
  <javaTypeResolver>
   <property name="forceBigDecimals" value="false" />
  </javaTypeResolver>
  <!-- 生成模型的包名和位置 -->
  <javaModelGenerator targetPackage="com.jschrj.model" targetProject="F:\Java\mybatis-generator-1.3.7\src">
   <property name="enableSubPackages" value="false" />
   <property name="trimStrings" value="true" />
  </javaModelGenerator>
  <!-- 生成的映射文件包名和位置 -->
  <sqlMapGenerator targetPackage="com.jschrj.mapping" targetProject="F:\Java\mybatis-generator-1.3.7\src">
   <property name="enableSubPackages" value="false" />
   <property name="trimStrings" value="flase" />
  </sqlMapGenerator>
  <!-- 生成DAO的包名和位置 -->
  <javaClientGenerator type="XMLMAPPER" targetPackage="com.jschrj.dao" targetProject="F:\Java\mybatis-generator-1.3.7\src">
   <property name="enableSubPackages" value="false" />
  </javaClientGenerator>
  <!-- 要生成那些表(更改tableName和domainObjectName就可以) -->
  <table tableName="SYS_YH" schema="zhoudl" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false" />
 </context>
</generatorConfiguration>

 


浏览.发表于:2018-11-24 19:35:28