MyBatis(八) —— 逆向工程

1. 关于逆向工程

MyBatis是一个优秀的持久层框架,但是需要手动去写很多文件,为了简化开发者们的开发,MyBatis提供了一个叫做MyBatis Generator的工具,帮助开发者自动生成mapperpojosql等,省去很多步骤,提高开发效率。

关于MyBatis Gennerator的详细介绍可以参考MyBatis Generator

2. 逆向工程开发

本文用maven工程来测试,在pom里面配置依赖,然后用简易的Java代码运行即可实现。

2.1 pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>cn.mybatis.generator</groupId>
	<artifactId>mybatis-generator</artifactId>
	<version>0.0.1-SNAPSHOT</version>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	</properties>

	<dependencies>
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.35</version>
		</dependency>

		<dependency>
			<groupId>org.mybatis.generator</groupId>
			<artifactId>mybatis-generator-core</artifactId>
			<version>1.3.2</version>
		</dependency>
				
		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>1.2.17</version>
		</dependency>
	</dependencies>
</project>

2.2 逆向工程配置文件

工程依赖配置好了之后,还需要配置逆向工程所需的配置文件,可以随意命名,具体配置可以参考quickstart,配置文件里面各个属性的详细配置可参考xmlconfig

上面的网站中给出了好几种配置方式,这里选择的是Sample Configuration for MyBatis3。本例中文件命名为mbg.xml,文件放在src/main/resources中。

<!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="simple" targetRuntime="MyBatis3Simple">
		<commentGenerator>
			<property name="suppressAllComments" value="true" />
		</commentGenerator>

		<jdbcConnection driverClass="com.mysql.jdbc.Driver"
			connectionURL="jdbc:mysql://192.168.252.41:3306/turtle" userId="root"
			password="root" />

		<javaModelGenerator
			targetPackage="com.test.mbg.pojo" targetProject=".\src\main\java" />

		<sqlMapGenerator targetPackage="mapper"
			targetProject=".\src\main\resources" />

		<javaClientGenerator type="XMLMAPPER"
			targetPackage="com.test.mbg.mapper" targetProject=".\src\main\java" />

		<table tableName="xxx" />
		<table tableName="xxx" />
		<table tableName="xxx" />
		<table tableName="xxx" />
		<table tableName="xxx" />
		<table tableName="xxx" />
		<table tableName="xxx" />
	</context>
</generatorConfiguration>

自动生成的文件里面带有很多的注释,文件中下面这个配置将所有自动生成的文件中的注释都去掉了:

<commentGenerator>
	<property name="suppressAllComments" value="true" />
</commentGenerator>

本例中在windows下进行了测试,文件中表示路径的相关配置,/\均可正常运行。

jdbcConnection 标签指数据库连接的信息,本例中直接硬编码了,事实上可以像配置MyBatis映射文件的时候一样,通过数据库配置文件和占位符来实现。

javaModelGenerator指定生成POJO类的相关配置,targetPackage表示的是放置这些文件的包名,不需要提前建好包,逆向工程运行后会自动生成,targetProject表示放在哪个目录中,下同。

sqlMapGenerator指定生成映射文件(即Mapper.xml)的相关配置。

javaClientGenerator指定生成接口(即Mapper.java)的相关配置。

table指定用以自动生成数据的数据表,一般来说,已经用逆向工程了,所以数据库里面的数据表都填上。

需要注意的是,<context>有其固定范围,配置相关信息的时候不要搞错了,否则会报错。

2.3 主程序入口

public class MBG {
	public static void main(String[] args) throws IOException, XMLParserException, InvalidConfigurationException, SQLException, InterruptedException {
		List<String> warnings = new ArrayList<String>();
		   boolean overwrite = true;
		   File configFile = new File("./src/main/resources/mbg.xml");
		   ConfigurationParser cp = new ConfigurationParser(warnings);
		   Configuration config = cp.parseConfiguration(configFile);
		   DefaultShellCallback callback = new DefaultShellCallback(overwrite);
		   MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
		   myBatisGenerator.generate(null);
	}
}

运行上面的程序,刷新一下工程,自动生成的文件就出来了。

3. 总结

MyBatis逆向工程可实现自动生成一些接口和配置文件。本文用maven工程实现逆向工程。也可以用普通java工程实现,不过需要导入相关的包,可能会比较麻烦。还可以直接使用maven配置来实现,不过pom里面需要配置相关的插件,详见Running MyBatis Generator With Maven

还需要注意一点,逆向工程只能自动生成单表的查询,复杂的联合查询还需要自己定义,可以复用自动生成的一些配置。

4. 参考文献

【1】http://mybatis.org/generator

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值