最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mybatis Generator逆向工程的使用詳細(xì)教程

 更新時(shí)間:2020年06月19日 10:21:48   作者:程序開(kāi)發(fā)者社區(qū)  
這篇文章主要介紹了Mybatis Generator逆向工程的使用詳細(xì)教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

一、MyBatis Generator簡(jiǎn)介

    MyBatis Generator(MBG)是MyBatis和iBATIS的代碼生成器。它將為所有版本的MyBatis以及版本2.2.0之后的iBATIS版本生成代碼。它將審查數(shù)據(jù)庫(kù)表(或許多表),并將生成可用于訪問(wèn)表的構(gòu)件。這減少了設(shè)置對(duì)象和配置文件以與數(shù)據(jù)庫(kù)表交互的初始麻煩。MBG尋求對(duì)簡(jiǎn)單CRUD(創(chuàng)建,檢索,更新,刪除)的大部分?jǐn)?shù)據(jù)庫(kù)操作產(chǎn)生重大影響。您仍然需要為連接查詢或存儲(chǔ)過(guò)程手動(dòng)編寫SQL和對(duì)象代碼。MyBatis Generator將生成:

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

  • 一個(gè)匹配表的主鍵的類(如果有主鍵)
  • 一個(gè)匹配表的非主鍵字段的類(BLOB字段除外)
  • 包含表的BLOB字段的類(如果表具有BLOB字段)
  • 用于啟用動(dòng)態(tài)選擇,更新和刪除的類

    這些類之間存在適當(dāng)?shù)睦^承關(guān)系。請(qǐng)注意,生成器可以配置為生成不同類型的POJO層次結(jié)構(gòu) - 例如,如果您愿意,可以選擇為每個(gè)表生成單個(gè)域?qū)ο蟆?/p>

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

  • insert 插入
  • update by primary key  按主鍵更新
  • update by example (using a dynamic where clause)  通過(guò)條件更新(使用動(dòng)態(tài)where子句)
  • delete by primary key  按主鍵刪除
  • delete by example (using a dynamic where clause)  按條件刪除(使用動(dòng)態(tài)where子句)
  • select by primary key  按主鍵查詢
  • select by example (using a dynamic where clause)  按條件查詢(使用動(dòng)態(tài)where子句)
  • count by example  按條件查詢記錄總數(shù)

    根據(jù)表結(jié)構(gòu)的不同,這些語(yǔ)句有不同的變體(例如,如果表沒(méi)有主鍵,則MBG不會(huì)通過(guò)主鍵功能生成更新)。

適當(dāng)使用上述對(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可以生成兩種:通過(guò)構(gòu)造函數(shù)或setter注入提供SqlMapClient。
  • 符合iBATIS DAO框架的DAO(iBATIS的可選部分,現(xiàn)在不推薦使用此框架,我們建議您使用Spring框架)

    MyBatis生成器設(shè)計(jì)為在迭代開(kāi)發(fā)環(huán)境中運(yùn)行良好,并且可以作為Ant任務(wù)或Maven插件包含在連續(xù)構(gòu)建環(huán)境中。迭代運(yùn)行MBG時(shí)需要注意的重要事項(xiàng)包括:

如果存在與新生成的XML文件同名的現(xiàn)有文件,MBG將自動(dòng)合并XML文件。MBG不會(huì)覆蓋您對(duì)其生成的XML文件所做的任何自定義更改。您可以反復(fù)運(yùn)行它,而不必?fù)?dān)心會(huì)丟失對(duì)XML的自定義更改。MBG將替換先前運(yùn)行中生成的任何XML元素。

MBG不會(huì)合并Java文件,它可以覆蓋現(xiàn)有文件或使用不同的唯一名稱保存新生成的文件。如果對(duì)生成的Java文件進(jìn)行更改并以迭代方式運(yùn)行MBG,則必須手動(dòng)合并更改。當(dāng)作為Eclipse插件運(yùn)行時(shí) ,MBG可以自動(dòng)合并Java文件。

二、MyBatis Generator使用

1、新建MBG的配置文件generatorConfig.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>
 
 <!--導(dǎo)入屬性配置-->
 <properties resource="generator.properties"></properties>
 <!--指定特定數(shù)據(jù)庫(kù)的jdbc驅(qū)動(dòng)jar包的位置-->
 <!--<classPathEntry location="${jdbc.driverLocation}"/>-->
 
 <context id="default" targetRuntime="MyBatis3">
 
 <!-- optional,旨在創(chuàng)建class時(shí),對(duì)注釋進(jìn)行控制,false生成注釋,true無(wú)注釋 -->
 <commentGenerator>
  <property name="suppressDate" value="false"/>
  <property name="suppressAllComments" value="false"/>
 </commentGenerator>
 
 <!--jdbc的數(shù)據(jù)庫(kù)連接 -->
 <jdbcConnection
  driverClass="${jdbc.driverClass}"
  connectionURL="${jdbc.connectionURL}"
  userId="${jdbc.userId}"
  password="${jdbc.password}">
 </jdbcConnection>
 
 
 <!--
  默認(rèn)false,把JDBC DECIMAL 和 NUMERIC 類型解析為 Integer,
  為 true時(shí)把JDBC DECIMAL 和 NUMERIC 類型解析為java.math.BigDecimal
 -->
 <!-- 非必需,類型處理器,在數(shù)據(jù)庫(kù)類型和java類型之間的轉(zhuǎn)換控制-->
 <javaTypeResolver>
  <property name="forceBigDecimals" value="false"/>
 </javaTypeResolver>
 
 
 <!-- Model模型生成器,用來(lái)生成含有主鍵key的類,記錄類 以及查詢Example類
  targetPackage 指定生成的model生成所在的包名
  targetProject 指定在該項(xiàng)目下所在的路徑|指定生成到的工程名稱
 -->
 <javaModelGenerator targetPackage="com.test.model"
    targetProject=".\src\main\java">
  <!-- 是否允許子包,即targetPackage.schemaName.tableName -->
  <property name="enableSubPackages" value="false"/>
  <!-- 是否對(duì)model添加 構(gòu)造函數(shù) true添加,false不添加-->
  <property name="constructorBased" value="false"/>
  <!-- 是否對(duì)類CHAR類型的列的數(shù)據(jù)進(jìn)行trim操作 -->
  <property name="trimStrings" value="true"/>
  <!-- 建立的Model對(duì)象是否 不可改變 即生成的Model對(duì)象不會(huì)有 setter方法,只有構(gòu)造方法 -->
  <property name="immutable" value="false"/>
 </javaModelGenerator>
 
 <!--Mapper映射文件生成所在的目錄 為每一個(gè)數(shù)據(jù)庫(kù)的表生成對(duì)應(yīng)的SqlMapper文件 -->
 <sqlMapGenerator targetPackage="com.test.mapper"
    targetProject=".\src\main\java">
  <property name="enableSubPackages" value="false"/>
 </sqlMapGenerator>
 
 <!-- 客戶端代碼,生成易于使用的針對(duì)Model對(duì)象和XML配置文件 的代碼
  type="ANNOTATEDMAPPER",生成Java Model 和基于注解的Mapper對(duì)象
  type="MIXEDMAPPER",生成基于注解的Java Model 和相應(yīng)的Mapper對(duì)象
  type="XMLMAPPER",生成SQLMapper XML文件和獨(dú)立的Mapper接口
 -->
 <javaClientGenerator targetPackage="com.test.mapper"
    targetProject=".\src\main\java" type="XMLMAPPER">
  <property name="enableSubPackages" value="true"/>
 </javaClientGenerator>
 
 <!--需要映射的數(shù)據(jù)庫(kù)的表名-->
 <table tableName="t_userinfo" domainObjectName="UserInfo"
  enableCountByExample="false" enableUpdateByExample="false"
  enableDeleteByExample="false" enableSelectByExample="false"
  selectByExampleQueryId="false">
 </table>
 </context>
</generatorConfiguration>

2、新建generator.properties文件

jdbc.driverLocation=C:\\mysql-connector-java-5.1.43.jar
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.connectionURL=jdbc:mysql://localhost:3306/mybatis
jdbc.userId=root
jdbc.password=tiger

3、配置執(zhí)行mybatis generator操作,這里有兩種方式

第1種方式:

如果使用maven項(xiàng)目就可以省去編寫Java啟動(dòng)類,使用maven插件和配置文件pom.xml即可,插件啟動(dòng)maven-generator,在pom.xml中添加maven-generator插件

<plugins>
 <!--myBatis逆向工程插件-->
 <plugin>
 <groupId>org.mybatis.generator</groupId>
 <artifactId>mybatis-generator-maven-plugin</artifactId>
 <version>1.3.2</version>
 <configuration>
  <verbose>true</verbose>
  <overwrite>true</overwrite>
  <configurationFile>${project.basedir}/src/main/resources/generatorConfig.xml</configurationFile>
 </configuration>
 <dependencies>
  <dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>5.1.35</version>
  </dependency>
 </dependencies>
 </plugin>
</plugins>

點(diǎn)擊mybatis-generator:generate就能執(zhí)行mybatis generator了

第2種方式:

1、如果不是maven項(xiàng)目添加該mybatis-generator-core-1.3.2.jar,編寫main方法指向mybatis逆向工程,我給依賴粘貼到下面了

<!-- https://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator-core -->
<dependency>
 <groupId>org.mybatis.generator</groupId>
 <artifactId>mybatis-generator-core</artifactId>
 <version>1.3.2</version>
</dependency>

2、修改generatorConfig.xml文件,放開(kāi)注釋的該配置

<classPathEntry location="${jdbc.driverLocation}"/>

3、然后編寫測(cè)試類執(zhí)行

/**
 * 如果不是maven項(xiàng)目可以這樣生成
 */
public class MybatisGeneratorTest {
 public static void main(String[] args) throws InterruptedException, SQLException, IOException, InvalidConfigurationException, XMLParserException {
 List<String> warnings = new ArrayList<String>();
 //生成的java文件是否覆蓋
 boolean overwrite = true;
 //指定逆向工程配置文件
 //File configFile = new File("E:\\project\\mybatis-generator\\src\\main\\resources\\generatorConfig.xml");
 InputStream resourceAsStream = MybatisGeneratorTest.class.getClassLoader().getResourceAsStream("generatorConfig.xml");
 ConfigurationParser cp = new ConfigurationParser(warnings);
 Configuration config = cp.parseConfiguration(resourceAsStream);
 DefaultShellCallback callback = new DefaultShellCallback(overwrite);
 MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config,callback, warnings);
 myBatisGenerator.generate(null);
 }
}

介紹完這兩種方式,查看數(shù)據(jù)表:

查看生成的實(shí)體類:​

TIP:可以看出如果實(shí)體類想要遵循駝峰命名規(guī)范,數(shù)據(jù)庫(kù)表字段名設(shè)計(jì)需要用"_"來(lái)劃分

查看生成的文件信息:​

TIP1:必須在<plugin></plugin>標(biāo)簽里添加數(shù)據(jù)庫(kù)驅(qū)動(dòng),在其他地方添加無(wú)效,如果不添加會(huì)報(bào)找不到驅(qū)動(dòng)錯(cuò)誤,如過(guò)不在該插件添加數(shù)據(jù)庫(kù)依賴的話可以使用 <classPathEntry location="${jdbc.driverLocation}"/> 來(lái)指定數(shù)據(jù)庫(kù)驅(qū)動(dòng)位置。

TIP2:如果你在使用mybatis generator插件執(zhí)行的時(shí)候報(bào)[ERROR] Failed to execute goal org.mybatis.generator:mybatis-generator-maven-plugin:1.3.2:generate (default-cli) on project mybatis-generator: <properties> resource generator.properties does not exist -> [Help 1]​

盡管你的 <properties resource="generator.properties"></properties>配置的沒(méi)有問(wèn)題,但是還是找不到generator.properties,查看該配置,注釋掉​

該配置會(huì)改變generatorConfig.xml中讀取generator.properties文件的默認(rèn)路徑

TIP3:Mybatis Generator反向工程默認(rèn)不會(huì)覆蓋生成的*.java文件。也可以設(shè)置覆蓋生成的*.java文件,在反向工程插件mybatis-generator-maven-plugin添加該配置<overwrite>true</overwrite>則會(huì)覆蓋生成的*.java文件,如圖​

    Mybatis Generator不會(huì)覆蓋你的mapper.xml文件,MBG會(huì)合并追加到mapper.xml和你自定義的存在一起,但是如果你修改MBG第一次默認(rèn)生成的SQL(MBG生成的CRUD),MBG會(huì)重新把自己生成的CRUD恢復(fù)默認(rèn),說(shuō)白了,MBG只會(huì)覆蓋他自己生成的SQL,不會(huì)覆蓋你自定義的,你自定義的不變。。。如圖,他不會(huì)動(dòng)你的自定義SQL,只會(huì)覆蓋Mybatis反向工程自己生成的SQL,前提MBG自動(dòng)生成SQL語(yǔ)句的注釋要存在。​

在最常見(jiàn)的用例中,MyBatis Generator(MBG)由XML配置文件驅(qū)動(dòng)。配置文件告訴MBG

  • 如何連接到數(shù)據(jù)庫(kù)
  • 生成什么對(duì)象,以及如何生成它們
  • 應(yīng)使用哪些表生成對(duì)象

官方MBG配置文件詳解地址:http://mybatis.org/generator/configreference/xmlconfig.html

附帶一個(gè)MBG的中文配置文件詳解:https://www.jianshu.com/p/e09d2370b796

更多Mybatis逆向工程的使用參考:http://www.mybatis.org/generator/index.html

總結(jié)

到此這篇關(guān)于Mybatis Generator逆向工程的使用詳細(xì)教程的文章就介紹到這了,更多相關(guān)Mybatis Generator逆向工程內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java基礎(chǔ)之查找文本特定內(nèi)容后進(jìn)行修改

    Java基礎(chǔ)之查找文本特定內(nèi)容后進(jìn)行修改

    這篇文章主要介紹了Java基礎(chǔ)之查找文本特定內(nèi)容后進(jìn)行修改,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java基礎(chǔ)的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • JavaWeb Spring注解Annotation深入學(xué)習(xí)

    JavaWeb Spring注解Annotation深入學(xué)習(xí)

    這篇文章主要為大家詳細(xì)介紹了JavaWeb Spring注解Annotation,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • Java Struts圖片上傳至指定文件夾并顯示圖片功能

    Java Struts圖片上傳至指定文件夾并顯示圖片功能

    這篇文章主要介紹了Java Struts圖片上傳至指定文件夾并顯示圖片功能,需要的朋友可以參考下
    2017-08-08
  • 使用Java如何將圖片轉(zhuǎn)成Base64編碼,并壓縮至40k

    使用Java如何將圖片轉(zhuǎn)成Base64編碼,并壓縮至40k

    這篇文章主要介紹了使用Java如何將圖片轉(zhuǎn)成Base64編碼,并壓縮至40k問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • JWT全面解讀和詳細(xì)使用步驟

    JWT全面解讀和詳細(xì)使用步驟

    這篇文章全面解讀了JWT規(guī)范和詳細(xì)使用步驟,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-12-12
  • Spring boot啟動(dòng)原理及相關(guān)組件整理

    Spring boot啟動(dòng)原理及相關(guān)組件整理

    這篇文章主要介紹了Spring boot啟動(dòng)原理及相關(guān)組件整理,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧
    2024-12-12
  • SpringBoot獲取客戶端的IP地址的實(shí)現(xiàn)示例

    SpringBoot獲取客戶端的IP地址的實(shí)現(xiàn)示例

    在Web應(yīng)用程序中,獲取客戶端的IP地址是一項(xiàng)非常常見(jiàn)的需求,本文主要介紹了SpringBoot獲取客戶端的IP地址的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09
  • java、android可用的rtp封包解包h264案例

    java、android可用的rtp封包解包h264案例

    這篇文章主要介紹了java、android可用的rtp封包解包h264案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-10-10
  • Java實(shí)現(xiàn)SHA-256加密算法的完全解析

    Java實(shí)現(xiàn)SHA-256加密算法的完全解析

    SHA-256是一種散列(哈希)算法,用于將任意長(zhǎng)度的數(shù)據(jù)映射為固定長(zhǎng)度的散列值,以保證數(shù)據(jù)完整性。本文將為大家介紹一下SHA-256加密算法的原理與實(shí)現(xiàn),希望對(duì)大家有所幫助
    2023-02-02
  • Java 實(shí)戰(zhàn)范例之線上新聞平臺(tái)系統(tǒng)的實(shí)現(xiàn)

    Java 實(shí)戰(zhàn)范例之線上新聞平臺(tái)系統(tǒng)的實(shí)現(xiàn)

    讀萬(wàn)卷書不如行萬(wàn)里路,只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+jsp+jdbc+mysql實(shí)現(xiàn)一個(gè)線上新聞平臺(tái)系統(tǒng),大家可以在過(guò)程中查缺補(bǔ)漏,提升水平
    2021-11-11

最新評(píng)論

正安县| 鲜城| 奉节县| 汕尾市| 巴中市| 凌海市| 宜章县| 张掖市| 长寿区| 木兰县| 赣榆县| 武鸣县| 南汇区| 永城市| 定州市| 永和县| 吉林市| 珲春市| 兴业县| 普洱| 大丰市| 绥化市| 大兴区| 诸暨市| 双城市| 加查县| 井冈山市| 元朗区| 渝北区| 呈贡县| 尼勒克县| 察隅县| 许昌县| 灵宝市| 台东市| 长白| 焦作市| 印江| 通辽市| 民丰县| 敖汉旗|