使用Mybatis Generator結(jié)合Ant腳本快速自動(dòng)生成Model、Mapper等文件的方法
MyBatis簡(jiǎn)介:
MyBatis是一個(gè)支持普通SQL查詢(xún),存儲(chǔ)過(guò)程和高級(jí)映射的優(yōu)秀持久層框架。MyBatis消除了幾乎所有的JDBC代碼和參數(shù)的手工設(shè)置以及對(duì)結(jié)果集的檢索封裝。MyBatis可以使用簡(jiǎn)單的XML或注解用于配置和原始映射,將接口和Java的POJO(Plain Old Java Objects,普通的Java對(duì)象)映射成數(shù)據(jù)庫(kù)中的記錄。
相關(guān)閱讀:MyBatis入門(mén)學(xué)習(xí)教程(一)-MyBatis快速入門(mén)
使用過(guò)Mybatis的同學(xué)都知道,針對(duì)每一個(gè)項(xiàng)目中使用到的數(shù)據(jù)庫(kù)表都需要建立其對(duì)應(yīng)的數(shù)據(jù)庫(kù)增刪改查xxxMapper.xml文件、實(shí)體類(lèi)xxx.java文件以及其他類(lèi)用來(lái)調(diào)用進(jìn)行數(shù)據(jù)庫(kù)操作的xxxMapper.java文件。在開(kāi)始學(xué)習(xí)Mybatis時(shí),我相信不少人都是通過(guò)手動(dòng)來(lái)建立這些文件的。毫無(wú)疑問(wèn),如果項(xiàng)目比較大的話還通過(guò)手動(dòng)建立這些文件效率是非常低的,這時(shí)我們可以通過(guò)mybatis-generator來(lái)自動(dòng)生成這些文件。但是,這個(gè)工具默認(rèn)是以命令行的形式來(lái)生成相關(guān)文件的,因此我們可以通過(guò)寫(xiě)一個(gè)Ant腳本,每次需要建立這些文件時(shí)在eclipse中執(zhí)行一下這個(gè)Ant腳本就可以自動(dòng)生成了。完整步驟如下:
一 導(dǎo)入相關(guān)jar包
要想使用“mybatis-generator”需要在web項(xiàng)目的lib中導(dǎo)入對(duì)應(yīng)的一個(gè)mybatis-generator-1.3.x.jar文件,Github上的下載地址:mybatis-generator的jar包下載
二 配置mybatis-generator的配置文件
(1)首先在項(xiàng)目中新建幾個(gè)包用于存放對(duì)應(yīng)的文件:

由上圖可以看出,src/main/java用于存放Java源代碼;src/main/env/dev用于存放開(kāi)發(fā)環(huán)境下的配置文件(如:jdbc,緩存,日志等);src/main/resources用于存放通用的一些配置文件,在這里我們自動(dòng)生成的Mapper.xml文件就存放在這個(gè)路徑下;src/test/java表示測(cè)試代碼,這里不管
注:如何在eclipse中添加這些源文件夾?

(2)在項(xiàng)目根目錄下新建generatorConfig.xml和build_mybatis.xml:
這兩個(gè)文件分別是“mybatis-generator”的配置文件和自動(dòng)化的Ant腳本,在項(xiàng)目中的路徑如下:

i)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> <!--數(shù)據(jù)庫(kù)驅(qū)動(dòng) --> <classPathEntry location="WebContent/WEB-INF/lib/mysql-connector-java-5.1.26-bin.jar" /> <context id="DB2Tables" targetRuntime="MyBatis3"> <commentGenerator> <property name="suppressAllComments" value="true" /><!-- 是否取消注釋 --> <property name="suppressDate" value="true" /> <!-- 是否生成注釋代時(shí)間戳 --> </commentGenerator> <!-- 數(shù)據(jù)庫(kù)連接信息 --> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://127.0.0.1:3306/ehcache_db" userId="root" password="root"> </jdbcConnection> <!-- 只有一個(gè)屬于forceBigDecimals,默認(rèn)false。 如果字段精確超過(guò)0,生成BigDecimal 如果字段精確是0,總長(zhǎng)度10-18生成Long;如果字段精確是0, 總長(zhǎng)5-9生成Integer; 如果字段精確是0,總長(zhǎng)小于5生成Short; 如果forceBigDecimals為true,統(tǒng)一生成BigDecimal --> <javaTypeResolver> <!-- 是否使用bigDecimal, false可自動(dòng)轉(zhuǎn)化以下類(lèi)型(Long, Integer, Short, etc.) --> <property name="forceBigDecimals" value="false" /> </javaTypeResolver> <!--生成Model.java文件 --> <javaModelGenerator targetPackage="cn.zifangsky.model" targetProject="src/main/java"> <!-- enableSubPackages:是否讓schema作為包的后綴 --> <property name="enableSubPackages" value="false" /> <!-- 是否針對(duì)string類(lèi)型的字段在set的時(shí)候進(jìn)行trim調(diào)用 --> <property name="trimStrings" value="true" /> </javaModelGenerator> <!-- 生成Mapper.xml文件 --> <sqlMapGenerator targetPackage="sqlmaps" targetProject="src/main/resources"> <!-- enableSubPackages:是否讓schema作為包的后綴 --> <property name="enableSubPackages" value="false" /> </sqlMapGenerator> <!-- 生成Mapper.java文件,即dao層 --> <javaClientGenerator type="XMLMAPPER" targetPackage="cn.zifangsky.mapper" targetProject="src/main/java"> <property name="enableSubPackages" value="false" /> </javaClientGenerator> <!-- 待生成的數(shù)據(jù)庫(kù)中的表名,生成一個(gè)表對(duì)應(yīng)的Java和xml文件就需要配置一段 --> <table tableName="user" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"> </table> </context> </generatorConfiguration>
注:需要修改的一些地方可以參照我上面的注釋進(jìn)行修改,同時(shí)別忘了數(shù)據(jù)驅(qū)動(dòng)的jar包
ii)build_mybatis.xml:
<project default="genfiles" basedir=".">
<property name="generated.source.dir" value="${basedir}" />
<path id="ant.run.lib.path">
<pathelement location="${basedir}/WebContent/WEB-INF/lib/mybatis-generator-core-1.3.2.jar"/>
</path>
<target name="genfiles" description="Generate the files">
<taskdef name="mbgenerator" classname="org.mybatis.generator.ant.GeneratorAntTask" classpathref="ant.run.lib.path"/>
<mbgenerator overwrite="true" configfile="generatorConfig.xml" verbose="false">
<propertyset>
<propertyref name="generated.source.dir" />
</propertyset>
</mbgenerator>
</target>
</project>
上面的代碼就兩個(gè)地方需要注意:一是“mybatis-generator”的jar包,二是需要對(duì)應(yīng)的“generatorConfig.xml”文件
注:如果對(duì)Ant腳本不太熟悉的話,可以參考下我寫(xiě)的這篇文章:http://m.fzitv.net/article/87674.htm
三 測(cè)試

進(jìn)行效果測(cè)試時(shí),只需要把“build_mybatis.xml”這個(gè)文件拖到Ant視圖中,然后點(diǎn)擊執(zhí)行這個(gè)腳本就可以自動(dòng)生成我們需要的文件了,最后就是刷新一下項(xiàng)目結(jié)構(gòu)就可以看到文件了,效果如下:

注:我測(cè)試使用到的數(shù)據(jù)庫(kù)數(shù)據(jù):
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(32) DEFAULT NULL,
`password` varchar(64) DEFAULT NULL,
`email` varchar(64) DEFAULT NULL,
`birthday` date DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES ('1', 'admin', '123456', 'admin@qq.com', '2000-01-02');
INSERT INTO `user` VALUES ('2', 'test', '1234', 'test@zifangsky.cn', '1990-12-12');
INSERT INTO `user` VALUES ('3', 'xxxx', 'xx', 'xx@zifangsky.cn', '1723-06-21');
以上所述是小編給大家介紹的使用Mybatis Generator結(jié)合Ant腳本快速自動(dòng)生成Model、Mapper等文件的方法,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
SpringBoot配置文件導(dǎo)入方法詳細(xì)講解
Spring Boot雖然是Spring的衍生物, 但默認(rèn)情況下Boot是不能直接使用Spring的配置文件的, 我們可以通過(guò)兩種方式導(dǎo)入Spring的配置2022-10-10
解決SpringCloud Feign傳對(duì)象參數(shù)調(diào)用失敗的問(wèn)題
這篇文章主要介紹了解決SpringCloud Feign傳對(duì)象參數(shù)調(diào)用失敗的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06
Java多線程(單例模式,阻塞隊(duì)列,定時(shí)器,線程池)詳解
本文是多線程初級(jí)入門(mén),主要介紹了多線程單例模式、阻塞隊(duì)列、定時(shí)器、線程池、多線程面試考點(diǎn),感興趣的小伙伴可以跟隨小編一起了解一下2022-09-09
詳解JFX11+IDEA跨平臺(tái)打包發(fā)布的完美解決辦法
這篇文章主要介紹了詳解JFX11+IDEA跨平臺(tái)打包發(fā)布的完美解決辦法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06
Java形參和實(shí)參的實(shí)例之Integer類(lèi)型與Int類(lèi)型用法說(shuō)明
這篇文章主要介紹了Java形參和實(shí)參的實(shí)例之Integer類(lèi)型與Int類(lèi)型用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-10-10
JVM堆內(nèi)存溢出后,其他線程是否可繼續(xù)工作的問(wèn)題解析
這篇文章主要介紹了JVM 堆內(nèi)存溢出后,其他線程是否可繼續(xù)工作?,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08
mybatis使用foreach遍歷list集合或者array數(shù)組方式
這篇文章主要介紹了mybatis使用foreach遍歷list集合或者array數(shù)組方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07

