日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

MyBatis Generator 感覺是市場(chǎng)上最好用的代碼生成方式

 昵稱34195792 2019-05-16

其實(shí)MyBatis Generator并不需要spring boot環(huán)境,只需要自己寫一個(gè)main方法運(yùn)行即可。本文主要介紹使用maven插件的方式。

注:本文采用的MyBatis Generator版本為:1.3.6

一、MyBatis Generator介紹

MyBatis Generator,縮寫MBG,是一個(gè)Mybatis和iBatis的代碼生成器。它支持Mybatis的所有版本,支持iBatis 2.2.0以后的版本。通過MyBatis Generator可以根據(jù)數(shù)據(jù)庫(kù)表生成相應(yīng)的實(shí)體、sql映射文件、Dao等,能應(yīng)付簡(jiǎn)單的CRUD(Create, Retrieve, Update, Delete),對(duì)于連接查詢或存儲(chǔ)過程等還是要手動(dòng)編寫sql和對(duì)象。

MyBatis Generator將生成以下內(nèi)容:

與表結(jié)構(gòu)匹配的Java POJO。這可能包括:

一個(gè)關(guān)于表主鍵的類(如果表有主鍵)

一個(gè)關(guān)于表非主鍵字段的類(BLOB字段除外)

一個(gè)包含表BLOB字段的類(如果表有BLOB字段)

一個(gè)支持動(dòng)態(tài)查詢、修改和刪除的類

MyBatis或iBATIS兼容的SQL映射XML文件。MBG為配置中指定的每個(gè)表的簡(jiǎn)單CRUD函數(shù)生成SQL,生成的SQL語(yǔ)句包括:

插入

通過主鍵更新

通過動(dòng)態(tài)where子句更新

通過主鍵刪除

通過動(dòng)態(tài)where子句刪除

通過主鍵查詢

通過動(dòng)態(tài)where子句查詢

通過動(dòng)態(tài)where子句查詢條數(shù)

注意:上面的內(nèi)容并不一定全部生成,比如:如果表沒有主鍵,則不會(huì)生成通過主鍵刪除等sql。

適合使用上述對(duì)象的Java類,Java類的生成是可選的。MBG將為MyBatis 3.X生成以下類型的Java類:

與MyBatis 3.x映射器基礎(chǔ)結(jié)構(gòu)配合使用的映射器接口

MBG將為iBATIS 2.x生成以下類型的Java類:

符合Spring框架的DAO

只使用iBATIS SQL映射API的DAO。這些DAO可以通過兩種方式生成:通過構(gòu)造函數(shù)或setter注入來(lái)提供SqlMapClient。

符合iBATIS DAO框架的DAO(這是iBATIS的一個(gè)可選部分,此框架已被棄用,所以建議改用Spring框架)

在迭代開發(fā)過程中使用MyBatis Generator的注意事項(xiàng):

如果存在與新生成的XML文件具有相同名稱的現(xiàn)有文件,MBG將自動(dòng)合并XML文件,合并時(shí),MBG不會(huì)覆蓋你在XML文件中添加的任何內(nèi)容。你可以重復(fù)生成而不用擔(dān)心丟失XML文件中你添加的內(nèi)容,MBG只替換通過MBG生成的任何XML元素。

MBG不會(huì)合并Java文件,它可以覆蓋現(xiàn)有文件或使用不同的唯一名稱保存新生成的文件(文件名后加1、2、3等序號(hào))。如果重復(fù)生成可以選擇自動(dòng)覆蓋替換或手動(dòng)合并更改。

二、引入MyBatis Generator的maven插件

在pom.xml里添加以下內(nèi)容:

<build>

<plugins>

<!--mybatis自動(dòng)生成代碼插件-->

<plugin>

<groupId>org.mybatis.generator</groupId>

<artifactId>mybatis-generator-maven-plugin</artifactId>

<version>1.3.6</version>

<configuration>

<!-- 是否覆蓋,true表示會(huì)替換生成的JAVA文件,false則不覆蓋 -->

<overwrite>true</overwrite>

</configuration>

<dependencies>

<!--mysql驅(qū)動(dòng)包-->

<dependency>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId>

<version>5.1.45</version>

</dependency>

</dependencies>

</plugin>

</plugins>

</build>

三、最小的MyBatis Generator配置文件

MyBatis Generator為我們默認(rèn)好很多配置,我們只需要很少量的配置即可,下面展示一下最小量的配置(只生成POJO)。

既然要根據(jù)表來(lái)生成,所以肯定要連數(shù)據(jù)庫(kù),所以傳說(shuō)中的四個(gè)參數(shù)必不可少,我們需要通過jdbcConnection來(lái)告訴MBG數(shù)據(jù)庫(kù)連接地址,另外表名也是必不可少的,MBG至少需要知道這兩個(gè)信息才能為我們干活。所以,最小的配置如下所示:

generatorConfig.xml內(nèi)容如下:

<?xml version='1.0' encoding='UTF-8'?>

<!DOCTYPE generatorConfiguration

PUBLIC '-////DTD MyBatis Generator Configuration 1.0//EN'

'http:///dtd/mybatis-generator-config_1_0.dtd'>

<generatorConfiguration>

<context id='MySql'>

<jdbcConnection

driverClass='com.mysql.jdbc.Driver'

connectionURL='jdbc:mysql://localhost:3306/springboot'

userId='root'

password='root'/>

<javaModelGenerator targetPackage='com.songguoliang.springboot.entity' targetProject='src/main/java'></javaModelGenerator>

<table tableName='tbl_user'></table>

</context>

</generatorConfiguration>

這里只生成POJO實(shí)體,并且放到com.songguoliang.springboot.entity包下,運(yùn)行maven插件:

可以看到,我們的實(shí)體已經(jīng)生成:

四、MyBatis Generator常規(guī)配置

上面我們了解怎么用MyBatis Generator的maven插件來(lái)生成代碼,上面只是生成了POJO,我們可能還想生成映射文件,dao接口文件等,先把generatorConfig.xml配置文件復(fù)制備份為generatorConfig-min.xml。

修改后的配置文件內(nèi)容:

<?xml version='1.0' encoding='UTF-8'?>

<!DOCTYPE generatorConfiguration

PUBLIC '-////DTD MyBatis Generator Configuration 1.0//EN'

'http:///dtd/mybatis-generator-config_1_0.dtd'>

<generatorConfiguration>

<!-- defaultModelType='flat' 設(shè)置復(fù)合主鍵時(shí)不單獨(dú)為主鍵創(chuàng)建實(shí)體 -->

<context id='MySql' defaultModelType='flat'>

<!-- 生成的POJO實(shí)現(xiàn)java.io.Serializable接口 -->

<plugin type='org.mybatis.generator.plugins.SerializablePlugin' />

<!--注釋-->

<commentGenerator>

<!-- 將數(shù)據(jù)庫(kù)中表的字段描述信息添加到注釋 -->

<property name='addRemarkComments' value='true'/>

<!-- 注釋里不添加日期 -->

<property name='suppressDate' value='true'/>

</commentGenerator>

<!-- 數(shù)據(jù)庫(kù)連接 -->

<jdbcConnection

driverClass='com.mysql.jdbc.Driver'

connectionURL='jdbc:mysql://localhost:3306/springboot'

userId='root'

password='root'/>

<!-- 生成POJO對(duì)象,并將類放到com.songguoliang.springboot.entity包下 -->

<javaModelGenerator targetPackage='com.songguoliang.springboot.entity' targetProject='src/main/java'></javaModelGenerator>

<!-- 生成mapper xml文件,并放到resources下的mapper文件夾下 -->

<sqlMapGenerator targetPackage='mapper' targetProject='src/main/resources'></sqlMapGenerator>

<!-- 生成mapper xml對(duì)應(yīng)dao接口,放到com.songguoliang.springboot.mapper包下-->

<javaClientGenerator targetPackage='com.songguoliang.springboot.mapper' targetProject='src/main/java' type='XMLMAPPER'></javaClientGenerator>

<!-- table標(biāo)簽可以有多個(gè),至少一個(gè),tableName指定表名,可以使用_和%通配符 -->

<table tableName='tbl_user'>

<!-- 是否只生成POJO對(duì)象 -->

<property name='modelOnly' value='false'/>

<!-- 數(shù)據(jù)庫(kù)中表名有時(shí)我們都會(huì)帶個(gè)前綴,而實(shí)體又不想帶前綴,這個(gè)配置可以把實(shí)體的前綴去掉 -->

<domainObjectRenamingRule searchString='^Tbl' replaceString=''/>

</table>

</context>

</generatorConfiguration>

重新運(yùn)行MyBatis Generator的maven插件,生成如下內(nèi)容:

在實(shí)際項(xiàng)目中,我們的數(shù)據(jù)庫(kù)連接已經(jīng)在配置文件里配置過了,如果在generatorConfig.xml配置文件再配一次,比較麻煩,通常可以直接引入數(shù)據(jù)庫(kù)的配置文件,如下:

application.properties內(nèi)容:

## 數(shù)據(jù)源配置

spring.datasource.url=jdbc:mysql://localhost:3306/springboot?useUnicode=true&characterEncoding=utf-8&useSSL=false

spring.datasource.username=root

spring.datasource.password=root

spring.datasource.driver-class-name=com.mysql.jdbc.Driver

generatorConfig.xml配置如下:

<?xml version='1.0' encoding='UTF-8'?>

<!DOCTYPE generatorConfiguration

PUBLIC '-////DTD MyBatis Generator Configuration 1.0//EN'

'http:///dtd/mybatis-generator-config_1_0.dtd'>

<generatorConfiguration>

<!-- 導(dǎo)入配置文件 -->

<properties resource='application.properties'/>

<!-- defaultModelType='flat' 設(shè)置復(fù)合主鍵時(shí)不單獨(dú)為主鍵創(chuàng)建實(shí)體 -->

<context id='MySql' defaultModelType='flat'>

<!-- 生成的POJO實(shí)現(xiàn)java.io.Serializable接口 -->

<plugin type='org.mybatis.generator.plugins.SerializablePlugin' />

<!--注釋-->

<commentGenerator>

<!-- 將數(shù)據(jù)庫(kù)中表的字段描述信息添加到注釋 -->

<property name='addRemarkComments' value='true'/>

<!-- 注釋里不添加日期 -->

<property name='suppressDate' value='true'/>

</commentGenerator>

<!-- 數(shù)據(jù)庫(kù)連接,直接通過${}讀取application.properties里的配置 -->

<jdbcConnection

driverClass='${spring.datasource.driver-class-name}'

connectionURL='${spring.datasource.url}'

userId='${spring.datasource.username}'

password='${spring.datasource.password}'/>

<!-- 生成POJO對(duì)象,并將類放到com.songguoliang.springboot.entity包下 -->

<javaModelGenerator targetPackage='com.songguoliang.springboot.entity' targetProject='src/main/java'></javaModelGenerator>

<!-- 生成mapper xml文件,并放到resources下的mapper文件夾下 -->

<sqlMapGenerator targetPackage='mapper' targetProject='src/main/resources'></sqlMapGenerator>

<!-- 生成mapper xml對(duì)應(yīng)dao接口,放到com.songguoliang.springboot.mapper包下-->

<javaClientGenerator targetPackage='com.songguoliang.springboot.mapper' targetProject='src/main/java' type='XMLMAPPER'></javaClientGenerator>

<!-- table標(biāo)簽可以有多個(gè),至少一個(gè),tableName指定表名,可以使用_和%通配符 -->

<table tableName='tbl_user'>

<!-- 是否只生成POJO對(duì)象 -->

<property name='modelOnly' value='false'/>

<!-- 數(shù)據(jù)庫(kù)中表名有時(shí)我們都會(huì)帶個(gè)前綴,而實(shí)體又不想帶前綴,這個(gè)配置可以把實(shí)體的前綴去掉 -->

<domainObjectRenamingRule searchString='^Tbl' replaceString=''/>

</table>

</context>

</generatorConfiguration>

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多