ibatis和myBatis的逆向工程使用
逆向工程是一種根據資料庫欄位逆向生成bean類以及xml檔案的技術。在日常開發中,對於簡單模組的研發非常實用。
根據目前的持久層框架,逆向工程分為兩種:
ibatis和mybatis
下面逐一介紹
1 .mybatis
在想要生成逆向程式碼的地方新建generatorConfig.xml配置檔案,將檔案放到resources目錄下(注意將resources設定為Resources目錄)
<?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>
<context id="default" targetRuntime="MyBatis3">
<!--javaBean實現序列化介面-->
<plugin type="org.mybatis.generator.plugins.SerializablePlugin" />
<!-- genenat entity時,生成toString -->
<plugin type="org.mybatis.generator.plugins.ToStringPlugin" />
<!-- 自定義物理分頁 可生成支援Mysql資料的limit 不支援Oracle -->
<!--<plugin type="org.mybatis.generator.plugins.PaginationPlugin" />-->
<!-- generate entity時,生成hashcode和equals方法-->
<plugin type="org.mybatis.generator.plugins.EqualsHashCodePlugin" />
<!-- 此處是將Example改名為Criteria 當然 想改成什麼都行~ -->
<!-- <plugin type="org.mybatis.generator.plugins.RenameExampleClassPlugin">
<property name="searchString" value="Example$" />
<property name="replaceString" value="Criteria" />
</plugin>-->
<!-- 此處是將UserMapper改名為UserDao 介面 當然 想改成什麼都行~ -->
<!-- <plugin type="org.mybatis.generator.plugins.rename.">
<property name="searchString" value="Mapper$" />
<property name="replaceString" value="Dao" />
</plugin>-->
<!-- 防止生成的程式碼中有很多註釋,加入下面的配置控制 -->
<commentGenerator>
<property name="suppressDate" value="true" />
</commentGenerator>
<!-- 資料庫連線 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://xxxx:3306/資料庫表名"
userId="root" password="root">
</jdbcConnection>
<!-- 預設false,把JDBC DECIMAL 和 NUMERIC 型別解析為 Integer,為 true時把JDBC DECIMAL 和
NUMERIC 型別解析為java.math.BigDecimal -->
<javaTypeResolver >
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!-- 資料表對應的持久層 -->
<javaModelGenerator targetPackage="po類生成的位置" targetProject="src/main/java">
<property name="enableSubPackages" value="true" />
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- daopper 對映配置檔案 -->
<sqlMapGenerator targetPackage="xml檔案生成位置" targetProject="src/main/resources">
<property name="enableSubPackages" value="false" />
</sqlMapGenerator>
<!-- mybatis3中的mapper介面 -->
<javaClientGenerator type="XMLMAPPER" targetPackage="mapper介面生成的位置" targetProject="src/main/java">
<property name="enableSubPackages" value="false" />
</javaClientGenerator>
<!-- 資料表進行生成操作 schema:相當於庫名; tableName:表名; domainObjectName:對應的DO -->
<!--此處書寫想要生成逆向工程的表名-->
<table schema=" " tableName="表名"></table>
</context>
</generatorConfiguration>
在當前工程的pom檔案中新增外掛依賴
注意build標籤要單獨放置,不要巢狀在其他標籤中,否則外掛無法正常載入
<build>
<plugins>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.5</version>
<configuration>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.driver.version}</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
外掛中需要新增資料庫的驅動依賴,我只新增了mysql的,可以根據自己的需要新增對應的驅動依賴。
新增成功之後,在Maven對應的工程下會生成如下的外掛
然後點選generate命令即可生成逆向工程。
以上就是mybatis的逆向工程生成
2 .ibatis
同mybatis一樣,在需要生成ibatis的地方新增generatorConfig.xml配置檔案,將檔案放到resources目錄下(注意將resources設定為Resources目錄)
檔案內容如下:
<?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>
<!--匯入屬性配置-->
<!--<properties resource="generator.properties"></properties>-->
<!--指定特定資料庫的jdbc驅動jar包的位置 -->
<!--<classPathEntry location="${jdbc.driverLocation}"/>-->
<context id="default" targetRuntime="Ibatis2Java5">
<!-- generate entity時,生成serialVersionUID -->
<plugin type="org.mybatis.generator.plugins.SerializablePlugin"/>
<!-- generate entity時,生成hashcode和equals方法 -->
<plugin type="org.mybatis.generator.plugins.EqualsHashCodePlugin"/>
<!-- 這個外掛只會增加字串欄位對映到一個JDBC字元的方法 -->
<plugin type="org.mybatis.generator.plugins.CaseInsensitiveLikePlugin"/>
<!-- genenat entity時,生成toString -->
<plugin type="org.mybatis.generator.plugins.ToStringPlugin"/>
<!-- optional,旨在建立class時,對註釋進行控制 -->
<commentGenerator>
<property name="suppressDate" value="true"/>
</commentGenerator>
<!--jdbc的資料庫連線 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://XXXX:3306/資料庫表名" userId="root"
password="root">
</jdbcConnection>
<!-- 非必需,型別處理器,在資料庫型別和java型別之間的轉換控制-->
<javaTypeResolver>
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<!-- Model模型生成器,用來生成含有主鍵key的類,記錄類 以及查詢Example類
targetPackage 指定生成的model生成所在的包名
targetProject 指定在該專案下所在的路徑
-->
<javaModelGenerator targetPackage="po類生成位置" targetProject="src/main/java">
<!-- 是否對model新增 建構函式 -->
<property name="constructorBased" value="true"/>
<!-- 是否允許子包,即targetPackage.schemaName.tableName -->
<property name="enableSubPackages" value="false"/>
<!-- 建立的Model物件是否 不可改變 即生成的Model物件不會有 setter方法,只有構造方法 -->
<property name="immutable" value="false"/>
<!-- 是否對類CHAR型別的列的資料進行trim操作 -->
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!--Mapper對映檔案生成所在的目錄 為每一個資料庫的表生成對應的SqlMap檔案 -->
<sqlMapGenerator targetPackage="sqlMapper.xml檔案生成位置" targetProject="src/main/resources">
<property name="enableSubPackages" value="false"/>
</sqlMapGenerator>
<!-- 客戶端程式碼,生成易於使用的針對Model物件和XML配置檔案 的程式碼
type="ANNOTATEDMAPPER",生成Java Model 和基於註解的Mapper物件
type="MIXEDMAPPER",生成基於註解的Java Model 和相應的Mapper物件
type="XMLMAPPER",生成SQLMap XML檔案和獨立的Mapper介面
-->
<javaClientGenerator targetPackage="dao類生成位置" targetProject="src/main/java" type="GENERIC-SI">
<property name="enableSubPackages" value=""/>
<!--
定義Maper.java 原始碼中的ByExample() 方法的可視性,可選的值有:
public;
private;
protected;
default
注意:如果 targetRuntime="MyBatis3",此引數被忽略
-->
<property name="exampleMethodVisibility" value=""/>
<!--
方法名計數器
Important note: this property is ignored if the target runtime is MyBatis3.
-->
<property name="methodNameCalculator" value=""/>
<!--
為生成的介面新增父介面
-->
<property name="rootInterface" value=""/>
</javaClientGenerator>
<table tableName="表名" schema="" />
<!-- optional , only for mybatis3 runtime
自動生成的鍵值(identity,或者序列值)
如果指定此元素,MBG將會生成<selectKey>元素,然後將此元素插入到SQL Map的<insert> 元素之中
sqlStatement 的語句將會返回新的值
如果是一個自增主鍵的話,你可以使用預定義的語句,或者新增自定義的SQL語句. 預定義的值如下:
Cloudscape This will translate to: VALUES IDENTITY_VAL_LOCAL()
DB2: VALUES IDENTITY_VAL_LOCAL()
DB2_MF: SELECT IDENTITY_VAL_LOCAL() FROM SYSIBM.SYSDUMMY1
Derby: VALUES IDENTITY_VAL_LOCAL()
HSQLDB: CALL IDENTITY()
Informix: select dbinfo('sqlca.sqlerrd1') from systables where tabid=1
MySql: SELECT LAST_INSERT_ID()
SqlServer: SELECT SCOPE_IDENTITY()
SYBASE: SELECT @@IDENTITY
JDBC: This will configure MBG to generate code for MyBatis3 suport of JDBC standard generated keys. This is a database independent method of obtaining the value from identity columns.
identity: 自增主鍵 If true, then the column is flagged as an identity column and the generated <selectKey> element will be placed after the insert (for an identity column). If false, then the generated <selectKey> will be placed before the insert (typically for a sequence).
<generatedKey column="" sqlStatement="" identity="" type=""/>
-->
<!-- optional.
列的命名規則:
MBG使用 <columnRenamingRule> 元素在計算列名的對應 名稱之前,先對列名進行重新命名,
作用:一般需要對BUSI_CLIENT_NO 前的BUSI_進行過濾
支援正在表示式
searchString 表示要被換掉的字串
replaceString 則是要換成的字串,預設情況下為空字串,可選
<columnRenamingRule searchString="" replaceString=""/>
-->
<!-- optional.告訴 MBG 忽略某一列
column,需要忽略的列
delimitedColumnName:true ,匹配column的值和資料庫列的名稱 大小寫完全匹配,false 忽略大小寫匹配
是否限定表的列名,即固定表列在Model中的名稱
<ignoreColumn column="PLAN_ID" delimitedColumnName="true" />
-->
<!--optional.覆蓋MBG對Model 的生成規則
column: 資料庫的列名
javaType: 對應的Java資料型別的完全限定名
在必要的時候可以覆蓋由JavaTypeResolver計算得到的java資料型別. For some databases, this is necessary to handle "odd" database types (e.g. MySql's unsigned bigint type should be mapped to java.lang.Object).
jdbcType:該列的JDBC資料型別(INTEGER, DECIMAL, NUMERIC, VARCHAR, etc.),該列可以覆蓋由JavaTypeResolver計算得到的Jdbc型別,對某些資料庫而言,對於處理特定的JDBC 驅動癖好 很有必要(e.g. DB2's LONGVARCHAR type should be mapped to VARCHAR for iBATIS).
typeHandler:
<columnOverride column="" javaType="" jdbcType="" typeHandler="" delimitedColumnName="" /> -->
</context>
</generatorConfiguration>
最後一行的<columnOverride>
標籤的作用是:覆蓋逆向工程生成的資料型別,可以自定義成你想要的資料型別。mybaits同樣可以使用。
pom依賴
<build>
<plugins>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.6</version>
<configuration>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
<dependencies>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.2.0</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.23</version>
<scope>runtime</scope>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
加入依賴之後,同樣會在idea相應工程下生成maven的外掛
直接點選即可mybatis-generate即可。
好了,以上就是逆向工程的使用,希望大家多多支援。
相關文章
- Mybatis逆向工程和新版本MybatisPlus3.4逆向工程的使用MyBatisS3
- mybatis的逆向工程MyBatis
- Mybatis逆向工程MyBatis
- 小白的MyBatis逆向工程MyBatis
- idea 中使用Mybatis Generator逆向工程生成程式碼IdeaMyBatis
- 筆記:MyBatis逆向工程 - Win/Mac筆記MyBatisMac
- Maven外掛生成myBatis逆向工程MavenMyBatis
- MyBatis的逆向工程詳細步驟操作MyBatis
- springboot整合mybatis增刪改查(三):mybatis逆向工程Spring BootMyBatis
- IDEA中建立springboot+Mybatis+generator逆向工程IdeaSpring BootMyBatis
- Mybatis【逆向工程,快取,代理】知識要點MyBatis快取
- 開發工具:Mybatis.Plus.外掛三種方式的逆向工程MyBatis
- MyBatis逆向工 maven外掛 generator 的配置及使用MyBatisMaven
- 回顧一下MyBatis逆向工程——自動生成程式碼MyBatis
- 收藏的爬蟲逆向工程爬蟲
- 漫談逆向工程
- 逆向工程核心原理(1)逆向基礎
- MyEclipse2014使用Hibernate逆向工程生成實體類Eclipse
- iOS開發之逆向工程iOS
- iOS逆向工程 iOS工具篇iOS
- 逆向工程暗黑破壞神
- 逆向工程加密函式:AES加密函式
- Mybatis和其他主流框架的整合使用MyBatis框架
- Mybatis逆向工程的2種方法,一鍵高效快速生成Pojo、Mapper、XML,擺脫大量重複開發MyBatisPOJOAPPXML
- Mybatis中org.apache.ibatis.binding.BindingException錯誤問題總結MyBatisApacheException
- 搭建基於springmvc,ibatis的工程實現讀寫分離,配置分離SpringMVCBAT
- 我逆向工程zone.js後的發現JS
- mybatis配置時出現org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)MyBatisApacheException
- MyBatis繫結錯誤:org.apache.ibatis.binding.BindingException:Invalid bound statement (not found)MyBatisApacheException
- Hibernate【查詢、連線池、逆向工程】
- 逆向工程 O1模型架構模型架構
- Spring Boot整合MybatisPlus逆向工程(MySQL/PostgreSQL)Spring BootMyBatisMySql
- MyBatis mapping.xml中的flushCache和useCache的使用MyBatisAPPXML
- springboot整合mybatis及其反向工程Spring BootMyBatis
- mybatis入門程式:刪除、更新使用者&&hibernate和mybatis的區別MyBatis
- 學習MyBatis必知必會(2)~MyBatis基本介紹和MyBatis基本使用MyBatis
- mybatis-plus自定義mapper報org.apache.ibatis.binding.BindingException: Invalid bound statement(not found)MyBatisAPPApacheException
- org.apache.ibatis.exceptions.PersistenceException:記錄mybatis 查詢結果對映異常ApacheExceptionMyBatis