1. 关于逆向工程
MyBatis
是一个优秀的持久层框架,但是需要手动去写很多文件,为了简化开发者们的开发,MyBatis
提供了一个叫做MyBatis Generator
的工具,帮助开发者自动生成mapper
、pojo
、sql
等,省去很多步骤,提高开发效率。
关于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