什么是逆向工程
MyBatis逆向工程可以方便的从数据库中将表自动映射到JAVA POJO类,并同时生成Mapper.xml和Mapper接口,方便实用。
MyBatis的一个主要的特点就是需要程序员自己编写sql,那么如果表太多的话,难免会很麻烦,所以mybatis官方提供了一个逆向工程,可以针对单表自动生成mybatis执行所需要的代码(包括mapper.xml、mapper.java、po…)。一般在开发中,常用的逆向工程方式是通过数据库的表生成代码。
jar包
需要使用逆向工程jar: mybatis-generator-core-1.3.2.jar
mybatis 的jar:mybatis-3.4.5.jar
数据库驱动jar:mysql-connector-java-5.1.7-bin.jar
案例
1)新建java project 为mybatisGenerator
使用逆向工程,我们最好是新建一个Java Project,而不要直接在项目工程中进行,以免自动生成的文件名冲突而造成覆盖。在新建的项目中生成代码,然后拷贝即可。
2)导入jar包
在项目下新建lib,把jar拷贝进去
build path:
3)新建一个GerenatorConfig.xml配置文件
新建配置文件,主要配置以下信息:
1、连接数据库,这是必须的,要不然怎么根据数据库的表生成代码呢?
2、指定要生成代码的位置,要生成的代码包括po类,mapper.xml和mapper.java
3、指定数据库中想要生成哪些表
<?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>
<context id="MybatisGenerator" targetRuntime="MyBatis3">
<commentGenerator>
<!-- 是否去除自动生成的注释,true是,false否 -->
<property name="supressAllComments" value="true" />
</commentGenerator>
<!-- 数据库连接信息:驱动类、连接地址、用户名、密码 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/mybatis"
userId="root" password="123456">
</jdbcConnection>
<!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和
NUMERIC 类型解析为java.math.BigDecimal -->
<javaTypeResolver>
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!-- 生成的po实体类的存放位置 -->
<javaModelGenerator targetPackage="com.oak.po"
targetProject=".\src">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
<!-- 从数据库返回的值被清理前后的空格 -->
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- 生成的mapper映射文件(XML文件)的存放位置 -->
<sqlMapGenerator targetPackage="com.oak.mapper" targetProject=".\src">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
</sqlMapGenerator>
<!-- 生成的mapper接口(JAVA文件)的存放位置 -->
<javaClientGenerator type="XMLMAPPER"
targetPackage="com.oak.mapper" targetProject=".\src">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
</javaClientGenerator>
<!-- 指定数据库表 -->
<table tableName="student" />
<table tableName="grade" />
<!-- 有些表的字段需要指定java类型
<table schema="" tableName="">
<columnOverride column="" javaType="" />
</table> -->
</context>
</generatorConfiguration>
4)新建一个class为MyGenerator.java
此类主要是用来加载配置文件,执行生成代码:
public class MyGenerator {
public void generate() throws Exception {
List<String> warnings = new ArrayList<String>();
boolean overwrite = true;
File configFile = new File("GerenatorConfig.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);
}
public static void main(String[] args) throws Exception {
try {
MyGenerator myGenerator = new MyGenerator();
myGenerator.generate();
} catch (Exception e) {
e.printStackTrace();
}
}
}
5)执行java类,查看结果
6)不要忘了刷新项目!!!