Mybatis屬于半自動ORM,在使用這個架構中,工作量最大的就是書寫Mapping的映射檔案,由于手動書寫很容易出錯,我們可以利用Mybatis-Generator來幫我們自動生成檔案。
mybatis-generator是一款在使用mybatis架構時,自動生成model,mapper和mapper.xml的工具,很大程度上減少了業務開發人員的手動編碼時間
Mybatis-Generator官方文檔:http://www.mybatis.org/generator/
Mybatis-Generator的下載下傳可以到這個位址:https://github.com/mybatis/generator/releases
在IDEA中你可以在插件庫中找到安裝就好了
下面來介紹下使用方法
一、在pom.xml中添加plugin
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.5</version>
<dependencies>
<dependency>
<groupId> mysql</groupId>
<artifactId> mysql-connector-java</artifactId>
<version> 5.1.39</version>
</dependency>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.5</version>
</dependency>
</dependencies>
<configuration>
<!--允許移動生成的檔案 -->
<verbose>true</verbose>
<!-- 是否覆寫 -->
<overwrite>true</overwrite>
<!-- 自動生成的配置 -->
<configurationFile>
src/main/resources/mybatis-generator.xml</configurationFile>
</configuration>
</plugin>
configurationFile
是說明mybatis-generator的配置檔案的位置
在插件中要引入
mysql
和
mybatis.generator
的依賴,不然就要說明jar包的路徑了
假如不在plugin中加mysql的話啟動會包這樣的錯
Exception getting JDBC Driver: com.mysql.jdbc.Driver
也就是找不到mysql資料庫的驅動
二、mybatis-generator.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>
<context id="MysqlTables" targetRuntime="MyBatis3">
<commentGenerator>
<property name="suppressDate" value="true"/>
<!-- 是否去除自動生成的注釋 true:是 : false:否 -->
<property name="suppressAllComments" value="false"/>
</commentGenerator>
<!--資料庫連結位址賬号密碼-->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://127.0.0.1:3306/***"
userId="****"
password="****">
</jdbcConnection>
<!--資料庫類型和java類型的控制轉換-->
<javaTypeResolver>
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<!--生成Model類存放位置-->
<javaModelGenerator targetPackage="com.yidu.armedical.model.po" targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!--生成映射檔案存放位置-->
<sqlMapGenerator targetPackage="com.yidu.armedical.mapper" targetProject="src/main/resources">
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<!--生成Dao類存放位置-->
<!-- 用戶端代碼,生成易于使用的針對Model對象和XML配置檔案 的代碼
type="ANNOTATEDMAPPER",生成Java Model 和基于注解的Mapper對象
type="MIXEDMAPPER",生成基于注解的Java Model 和相應的Mapper對象
type="XMLMAPPER",生成SQLMap XML檔案和獨立的Mapper接口
-->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.yidu.armedical.mapper" targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<!--生成對應表及類名-->
<table tableName="product_model" domainObjectName="productModel" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>
</context>
</generatorConfiguration>
<jdbcConnection>
用于配置mysql資料庫連接配接,需要路徑,驅動,資料庫使用者名和密碼。
<javaModelGenerator>
生成model實體類檔案位置
<sqlMapGenerator>
生成mapper.xml配置檔案位置
<javaClientGenerator>
生成mapper接口檔案位置
<table>
需要生成的實體類對應的表名,多個實體類複制多份該配置即可
可選:
1,
schema
:資料庫的schema;
2,
catalog
:資料庫的catalog;
3,
alias
:為資料表設定的别名,如果設定了alias,那麼生成的所有的SELECT SQL語句中,列名會變成:alias_actualColumnName
4,
domainObjectName
:生成的domain類的名字,如果不設定,直接使用表名作為domain類的名字;可以設定為somepck.domainName,那麼會自動把domainName類再放到somepck包裡面;
5,
enableInsert
(預設true):指定是否生成insert語句;
6,
enableSelectByPrimaryKey
(預設true):指定是否生成按照主鍵查詢對象的語句(就是getById或get);
7,
enableSelectByExample
(預設true):MyBatis3Simple為false,指定是否生成動态查詢語句;
8,
enableUpdateByPrimaryKey
(預設true):指定是否生成按照主鍵修改對象的語句(即update);
9,
enableDeleteByPrimaryKey
(預設true):指定是否生成按照主鍵删除對象的語句(即delete);
10,
enableDeleteByExample
(預設true):MyBatis3Simple為false,指定是否生成動态删除語句;
11,
enableCountByExample
(預設true):MyBatis3Simple為false,指定是否生成動态查詢總條數語句(用于分頁的總條數查詢);
12,
enableUpdateByExample
(預設true):MyBatis3Simple為false,指定是否生成動态修改語句(隻修改對象中不為空的屬性);
13,
modelType
:參考context元素的defaultModelType,相當于覆寫;
14,
delimitIdentifiers
:參考tableName的解釋,注意,預設的delimitIdentifiers是雙引号,如果類似MYSQL這樣的資料庫,使用的是(反引号,那麼還需要設定context的beginningDelimiter和endingDelimiter屬性)
15,
delimitAllColumns
:設定是否所有生成的SQL中的列名都使用辨別符引起來。預設為false,delimitIdentifiers參考context的屬性
三、到此為止,所有的配置已完畢。
方式一:使用idea的
maven helper
插件直接快速生成
image.png
方式二:在Intellij IDEA添加一個“Run運作”選項,使用
maven
運作
mybatis-generator-maven-plugin
插件 :
首先選擇配置edit configuration編輯結構
image.png
然後建立maven運作項
image.png
配置指令 mybatis-generator:generate -e
image.png
運作
image.png
運作成功
image.png
參考文章:
http://blog.csdn.net/liudongdong0909/article/details/51534735
http://www.jianshu.com/p/e09d2370b796