1、Mybatis官方提供的逆向工程,可以将单表生生成常用的 Mapper、entity 等配置;
2、从数据库表反向生成 mapper.java/mapper.xml/entity/辅助查询类;
3、官方提示的运行环境为:最低为JRE 5.0
4、需要使用的到jar包:
mybatis-3.2 .3.ja myBatis连接使用
mybatis-generator-core-1.3.2.jar 官方逆向工程包
mysql-connector-java-5.1.28-bin.jar 数据库连接使用
5、主要功能:1)生成POJO与数据库结构相对应;
2)如果有主键,能匹配主键;
3)如果没有主键,可以用其他的字段去匹配
4)动态select/update/delete方法
5)自动生成接口Mapper,即DAO的 interface;
6)生成Example例子供参考
6、详细介绍配置的过程
(1)利用eclipse创建javaweb的动态工程,将上面的三个lib包,加入到WEB-INF里面的lib包下,动态工程会自动包jar导入到运行环境中;
(2)在动态工程中直接建立
generatorConfig.xml,文件配置如下:
需要提示本例不需要导入mybatis-generator-config_1_0.dtd,原来在学习mybatis的时候还需要导入不同的dtd;
<? 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>
<!--
1、、、、targetRuntime="MyBatis3" 目标环境
MyBatis3:豪华版,复杂多条件查询
MyBatis3Simple:helloWorld
-->
<context id= "atguiguTables" targetRuntime ="MyBatis3" >
<commentGenerator >
<!-- 是否去除自动生成的注释 true:是;false:否 -->
< property name= "suppressAllComments" value ="true" />
</ commentGenerator>
<!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
<jdbcConnection driverClass= "com.mysql.jdbc.Driver"
connectionURL ="jdbc:mysql://127.0.0.1:3306/test"
userId= "root"
password= "123456" >
</jdbcConnection >
<!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL
和 NUMERIC 类型解析为java.math.BigDecimal -->
<javaTypeResolver >
<property name= "forceBigDecimals" value= "false" />
</javaTypeResolver >
<!--
targetProject:生成Entity类的路径
javaModel:java实体类生成位置
2、、、、targetPackage:指定包名
-->
<javaModelGenerator targetPackage ="com.atguigu.entities" targetProject =".\src" >
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name= "enableSubPackages" value= "false" />
<!-- 从数据库返回的值被清理前后的空格 -->
<property name= "trimStrings" value= "true" />
</javaModelGenerator >
<!-- targetProject:XxxMapper.xml映射文件生成的路径 -->
<!--sqlMapGenerator:生成的mapper 文件放在那里targetPackage -->
<sqlMapGenerator targetPackage= "mybatis.mappers" targetProject =".\config" >
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name= "enableSubPackages" value= "true" />
</sqlMapGenerator >
<!-- targetPackage:Mapper接口生成的位置
这 mapper接口放在那里
-->
<javaClientGenerator type= "XMLMAPPER" targetPackage ="com.atguigu.mapper" targetProject =".\src" >
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name= "enableSubPackages" value= "true" />
</javaClientGenerator >
<!-- 数据库表名字和我们的entity类对应的映射指定
使用table指定要将哪些表逆向出来
-->
<table tableName= "tbl_person" domainObjectName ="Customer" >
</table >
<table tableName= "tbl_student" domainObjectName ="Student" >
</table >
</context >
</ generatorConfiguration>
3、数据库配置文件如下,需要说明本例中文件库中已有tbl_person、tbl_student,都是普通的表结构;
user=root
password= 123456
driverClass= com.mysql.jdbc.Driver
jdbcUrl=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF8
4、建立测试用例,用以生成需要的POJO、DAO的interface以及mapper.xml文件:
测试用例如下:
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.internal.DefaultShellCallback;
public class GeneratorTest {
public static void main(String[] args) throws Exception {
List<String> warnings = new ArrayList<String>();
boolean overwrite = true;
File configFile = new File("generatorConfig.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 );
}
}
5、大功告成,直接按F5刷新项目就可以完成;