溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Mybatis中使用mybatis-generator結(jié)合Ant腳本快速自動(dòng)生成Model、Mapper等文件

發(fā)布時(shí)間:2020-08-02 09:39:17 來源:網(wǎng)絡(luò) 閱讀:2660 作者:pangfc 欄目:數(shù)據(jù)庫

使用過Mybatis的同學(xué)都知道,針對(duì)每一個(gè)項(xiàng)目中使用到的數(shù)據(jù)庫表都需要建立其對(duì)應(yīng)的數(shù)據(jù)庫增刪改查xxxMapper.xml文件、實(shí)體類xxx.java文件以及其他類用來調(diào)用進(jìn)行數(shù)據(jù)庫操作的xxxMapper.java文件。在開始學(xué)習(xí)Mybatis時(shí),我相信不少人都是通過手動(dòng)來建立這些文件的。毫無疑問,如果項(xiàng)目比較大的話還通過手動(dòng)建立這些文件效率是非常低的,這時(shí)我們可以通過mybatis-generator來自動(dòng)生成這些文件。但是,這個(gè)工具默認(rèn)是以命令行的形式來生成相關(guān)文件的,因此我們可以通過寫一個(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)的文件:

Mybatis中使用mybatis-generator結(jié)合Ant腳本快速自動(dòng)生成Model、Mapper等文件

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

注:如何在eclipse中添加這些源文件夾?

Mybatis中使用mybatis-generator結(jié)合Ant腳本快速自動(dòng)生成Model、Mapper等文件

(2)在項(xiàng)目根目錄下新建generatorConfig.xml和build_mybatis.xml:

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

Mybatis中使用mybatis-generator結(jié)合Ant腳本快速自動(dòng)生成Model、Mapper等文件

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ù)庫驅(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ù)庫連接信息 -->
		<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。 如果字段精確超過0,生成BigDecimal 如果字段精確是0,總長度10-18生成Long;如果字段精確是0, 
			總長5-9生成Integer; 如果字段精確是0,總長小于5生成Short; 如果forceBigDecimals為true,統(tǒng)一生成BigDecimal -->
		<javaTypeResolver>
			<!-- 是否使用bigDecimal, false可自動(dòng)轉(zhuǎn)化以下類型(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類型的字段在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ù)庫中的表名,生成一個(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腳本不太熟悉的話,可以參考下我寫的這篇文章:http://www.zifangsky.cn/444.html

三 測試

Mybatis中使用mybatis-generator結(jié)合Ant腳本快速自動(dòng)生成Model、Mapper等文件

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

Mybatis中使用mybatis-generator結(jié)合Ant腳本快速自動(dòng)生成Model、Mapper等文件

注:我測試使用到的數(shù)據(jù)庫數(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');


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI