逆向工程是一个专门为 MyBatis 框架使用者设计的代码生成器,可以根据数据库中的表字段名,自动生成 POJO 类,mapper 接口与 SQL 映射文件。支持基本的增删改查功能,以及自定义条件的查询。但是不支持复杂 SQL 与存储过程。
数据库结构文件 (拷贝直接执行即可):
t_employee
表结构:
DROP TABLE IF EXISTS `t_employee`;
CREATE TABLE `t_employee` (
`id` int(11) unsigned zerofill NOT NULL AUTO_INCREMENT,
`username` varchar(30) DEFAULT NULL,
`gender` char(1) DEFAULT NULL,
`email` varchar(20) DEFAULT NULL,
`d_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8;
t_dept
表结构:
DROP TABLE IF EXISTS `t_dept`;
CREATE TABLE `t_dept` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`dept_name` varchar(20) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
在pom.xml
中添加对应的依赖 (如果不是 Maven 项目,可以点击上面的 GitHub 地址下载 jar 包):
<dependency>
<groupId>org.mybatis.generatorgroupId>
<artifactId>mybatis-generatorartifactId>
<version>1.3.6version>
dependency>
逆向工程配置文件mybatis-generator.xml
:
<generatorConfiguration>
<context id="testTables" targetRuntime="MyBatis3Simple">
<commentGenerator>
<property name="suppressAllComments" value="true" />
commentGenerator>
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost/mybatis-study"
userId="root"
password="1234">
jdbcConnection>
<javaTypeResolver>
<property name="forceBigDecimals" value="false" />
javaTypeResolver>
<javaModelGenerator targetPackage="com.jas.mybatis.bean"
targetProject=".\src\main\java">
<property name="enableSubPackages" value="false" />
<property name="trimStrings" value="false" />
javaModelGenerator>
<sqlMapGenerator targetPackage="mapper-config"
targetProject=".\src\main\resources/">
<property name="enableSubPackages" value="false" />
sqlMapGenerator>
<javaClientGenerator type="XMLMAPPER"
targetPackage="com.jas.mybatis.mapper"
targetProject=".\src\main\java">
<property name="enableSubPackages" value="false" />
javaClientGenerator>
<table tableName="t_employee" domainObjectName="Employee"/>
<table tableName="t_dept" domainObjectName="Department"/>
context>
generatorConfiguration>
将配置文件放在工程下:
执行生成代码的方式有很多,比如使用 Maven 插件,XML 配置文件等,这里我们通过代码的方式一键执行。
@Test
public void testMBG() throws Exception{
List warnings = new ArrayList();
boolean overwrite = true;
// 指定代码生成配置文件的位置
File configFile = new File("mybatis-generator.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);
}
执行结果:
下面是 mapper 接口中自动生成的方法,只生成了五个基本的增改查方法。这几个方法能不能使用呢?下面就来测试一下。
测试:
private SqlSessionFactory getSqlSessionFactory() throws IOException {
String resource = "mybatis-config.xml";
InputStream is = Resources.getResourceAsStream(resource);
return new SqlSessionFactoryBuilder().build(is);
}
@Test
public void testMyBatis3Simple() throws IOException {
SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
SqlSession sqlSession = sqlSessionFactory.openSession();
// 向数据中查询 id 为 1 的用户信息
EmployeeMapper employeeMapper = sqlSession.getMapper(EmployeeMapper.class);
Employee employee = employeeMapper.selectByPrimaryKey(1);
System.out.println(employee.getUsername());
}
这篇博客主要介绍了 MyBatis 中关于逆向工程的使用,逆向工程的使用可以简化我们的开发过程,提高开发效率。MyBatis 还支持其他几种生成代码的方式,只需要在
标签中设置targetRuntime
属性即可。
上面我们设置的值是 MyBatis3Simple
,这种方式在生成代码的时候只会生成最基本的增删代码;还可以设置为MyBatis3
,这种方式生成的代码支持多条件查询语句,还有其他的值可以设置,这里就不再多解释了。
一般情况下我们只用来生成最基本的代码,复杂的 SQL 语句还是由开发人员自己定义比较好。最后希望这篇博文能够为你提供帮助。