首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

MyBatis Generator 整合 Oracle 實戰:配置詳解與常見問題

     編輯:Java 綜合教學

環境準備

  • Oracle JDBC 驅動:ojdbc6-11.2.0.1.0.jar(需手動安裝至本地倉庫)
  • MyBatis Generator Core:mybatis-generator-core-1.3.2.jar
  • 數據庫連接信息:URL、用戶名、密碼、Schema

核心配置 generatorConfig.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
  PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
  "https://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
  <!-- 驅動 JAR 路徑,建議使用本地倉庫絕對路徑 -->
  <classPathEntry location="C:/Users/rocky/.m2/repository/com/oracle/ojdbc6/11.2.0.1.0/ojdbc6-11.2.0.1.0.jar" />

  <context id="MyBatis3" targetRuntime="MyBatis3">
    <jdbcConnection driverClass="oracle.jdbc.driver.OracleDriver"
      connectionURL="jdbc:oracle:thin:@192.168.1.5:1521:MYDB"
      userId="rocky" password="rocky">
    </jdbcConnection>

    <javaModelGenerator targetPackage="com.myproject.rocky.web.model" targetProject="./src">
      <property name="enableSubPackages" value="true"/>
      <property name="trimStrings" value="true"/>
    </javaModelGenerator>

    <sqlMapGenerator targetPackage="com.myproject.rocky.web.dao" targetProject="./src">
      <property name="enableSubPackages" value="true"/>
    </sqlMapGenerator>

    <javaClientGenerator type="XMLMAPPER"
      targetPackage="com.myproject.rocky.web.dao" targetProject="./src">
      <property name="enableSubPackages" value="true"/>
    </javaClientGenerator>

    <table tableName="OBJ_USER" schema="rocky"
      enableCountByExample="false" enableUpdateByExample="false"
      enableDeleteByExample="false" enableSelectByExample="false"
      selectByExampleQueryId="false">
      <property name="ignoreQualifiersAtRuntime" value="true"/>
      <property name="runtimeTableName" value="OBJ_USER"/>
    </table>
  </context>
</generatorConfiguration>

執行命令

java -jar mybatis-generator-core-1.3.2.jar -configfile generatorConfig.xml -overwrite

關鍵配置解析

標籤/屬性作用
targetRuntime="MyBatis3"生成 MyBatis 3.x 風格代碼(含注解支持)
javaModelGenerator實體類輸出包路徑、項目目錄
sqlMapGeneratorMapper XML 輸出路徑
javaClientGenerator type="XMLMAPPER"生成 Mapper 接口 + XML,而非純注解
table.enableXXXByExample="false"禁用 Example 查詢/更新/刪除,精簡生成代碼
ignoreQualifiersAtRuntime運行時忽略 Schema 前綴,提升可移植性

常見問題與解決

1. 表無主鍵 → 僅生成 insert 方法

原因:MyBatis Generator 依賴主鍵生成 selectByPrimaryKey、updateByPrimaryKey 等方法。
解決:為表添加主鍵,或在 <table> 配置 <generatedKey> 指定主鍵列。

2. Oracle 表名/列名大小寫不匹配

Oracle 默認大寫存儲。配置 <property name="autoDelimitKeywords" value="true"/> 在 context 中,自動加雙引號。

3. 生成代碼包含過時註解/格式不統一

使用 <commentGenerator> 關閉註解:

<commentGenerator>
  <property name="suppressAllComments" value="true"/>
  <property name="suppressDate" value="true"/>
</commentGenerator>

4. 驅動類找不到

確保 classPathEntry 指向正確的 ojdbc6.jar,或將驅動安裝至 Maven 倉庫:

mvn install:install-file -Dfile=ojdbc6.jar -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.1.0 -Dpackaging=jar

最佳實踐建議

  • 將 generatorConfig.xml 納入版本控制,團隊共享
  • 配合 Maven 插件 mybatis-generator-maven-plugin 集成到構建生命周期
  • 生成代碼後人工審核,避免覆蓋手工修改的邏輯
  • 大表分模塊生成,避免單次生成過多文件導致 IDE 卡頓
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved