Mybatis逆向工程是什么?
MyBatis Generator简称MBG,是一个专门为MyBatis框架使用者定制的代码生成器,可以快速的根据表生成对应的映射文件(mapper.xml),接口,以及bean类。支持基本的增删改查,以及QBC风格的条件查询。但是表连接、存储过程等这些复杂sql的定义需要我们手工编写。
官方文档:http://mybatis.org/generator/
Java工程使用Mybatis generator
- 下载mybatis-generator-core-1.4.0.jar,导入eclipse java工程,添加到 build path。
下载地址:https://github.com/mybatis/generator/releases - 创建一个xml配置文件,用于配置Mybatis generator。配置文件例子参考http://mybatis.org/generator/configreference/xmlconfig.html
参考例子mbg.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>
<!--
targetRuntime="MyBatis3Simple":生成简单版的CRUD
MyBatis3:豪华版
目前Mybatis版本是1.4,支持的targetRuntime更多了,具体参考(http://mybatis.org/generator/configreference/context.html)。
生成的方法会更多。
-->
<context id="DB2Tables" targetRuntime="MyBatis3">
<!-- jdbcConnection:指定如何连接到目标数据库 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/mybatis?allowMultiQueries=true"
userId="root"
password="123456">
</jdbcConnection>
<!-- 定义属性怎么使用java解析器 -->
<javaTypeResolver >
<!-- 是否强制转换BigDecimals -->
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!-- javaModelGenerator:指定javaBean的生成策略
targetPackage="test.model":目标包名
targetProject="\MBGTestProject\src":目标工程
-->
<javaModelGenerator targetPackage="com.atguigu.mybatis.bean"
targetProject=".\src">
<property name="enableSubPackages" value="true" />
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- sqlMapGenerator:sql映射生成策略: -->
<sqlMapGenerator targetPackage="com.atguigu.mybatis.dao"
targetProject=".\conf">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>
<!-- javaClientGenerator:指定mapper接口所在的位置 -->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.atguigu.mybatis.dao"
targetProject=".\src">
<property name="enableSubPackages" value="true" />
</javaClientGenerator>
<!-- 指定要逆向分析哪些表:根据表要创建javaBean tableName:表名
domainObjectName:对应的javaBean名 -->
<table tableName="tbl_dept" domainObjectName="Department"></table>
<table tableName="tbl_employee" domainObjectName="Employee"></table>
</context>
</generatorConfiguration>
- 运行代码生成器生成代码。参考:http://mybatis.org/generator/running/runningWithJava.html
还有其他的方式运行生成器,这里使用的是java with xml的方法。
写一个main函数如下,直接运行,就可以自动生成javabean,mapper接口以及mapper.xml文件。
publicstaticvoidmain(String[] args) throwsException {
List<String> warnings = newArrayList<String>();
booleanoverwrite = true;
File configFile = newFile("mbg.xml");
ConfigurationParser cp = newConfigurationParser(warnings);
Configuration config = cp.parseConfiguration(configFile);
DefaultShellCallback callback = newDefaultShellCallback(overwrite);
MyBatisGenerator myBatisGenerator = newMyBatisGenerator(config,
callback, warnings);
myBatisGenerator.generate(null);
}
Mybatis generator会自动帮我们生成一些简单的增删改查操作,复杂的操作还是需要我们自己定义的。
工程结构图
红色框框出的文件都是通过Mybatis Generator自动生成的。