什么是MyBatis逆向工程?
逆向工程就是:创建好数据库表之后,MBG
可以根据数据库表自动为您生成pojo类
、example类(用于添加条件,相当where语句后面的部分 )
、mapper文件
需求:通过MySQL数据库存在的库表生成自定义对象,接口,xml配置
MyBatis逆向工程的使用
mybatis-generator使用步骤:
1、通过maven管理jar包依赖
<!--Mybatis 逆向工程依赖--> <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.3.2</version> </dependency> <!--Mybatis 逆向工程依赖--> <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.3.2</version> </dependency> <!--数据库连接配置--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.39</version> </dependency> <!--mybatis配置--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.1</version> </dependency>
2、写XML配置文件(mybatis-generator-config.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> <!--<classPathEntry location="/Program Files/IBM/SQLLIB/java/db2java.zip" />--> <!-- context生成一组对象环境 id:必选,上下文id,用于在生成错误时提示 targetRuntime: 1,MyBatis3:默认的值,生成基于MyBatis3.x以上版本的内容,包括XXXBySample; 2,MyBatis3Simple:类似MyBatis3,只是不生成XXXBySample; --> <context id="testTables" targetRuntime="MyBatis3Simple"> <!--数据库连接的信息:驱动类、连接地址、账号、密码--> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/test" userId="root" password="123456"> </jdbcConnection> <!-- java类型处理器 用于处理DB中的类型到Java中的类型,默认使用JavaTypeResolverDefaultImpl; 注意一点,默认会先尝试使用Integer,Long,Short等来对应DECIMAL和 NUMERIC数据类型; true:使用BigDecimal对应DECIMAL和 NUMERIC数据类型 false:默认 --> <javaTypeResolver > <property name="forceBigDecimals" value="false" /> </javaTypeResolver> <!--生成bean类的位置--> <javaModelGenerator targetPackage="com.tulun.bean" targetProject="./src/main/java"> <!--enableSubPackages:是否让schema作为包的后缀--> <property name="enableSubPackages" value="false" /> <!--从数据库中返回的值清理前后的空格--> <property name="trimStrings" value="true" /> </javaModelGenerator> <!--map.xml的映射文件的配置:存放位置--> <sqlMapGenerator targetPackage="com.tulun.mapper" targetProject="./src/main/java"> <!--enableSubPackages:是否让schema作为包的后缀--> <property name="enableSubPackages" value="false" /> </sqlMapGenerator> <!--map.java接口文件的配置--> <javaClientGenerator type="XMLMAPPER" targetPackage="com.tulun.dao" targetProject="./src/main/java"> <property name="enableSubPackages" value="false" /> </javaClientGenerator> <!--指定数据库--> <table tableName="user"/> <table tableName="orders"/> <!--<table schema="DB2ADMIN" tableName="ALLTYPES" domainObjectName="Customer" >--> <!--<property name="useActualColumnNames" value="true"/>--> <!--<generatedKey column="ID" sqlStatement="DB2" identity="true" />--> <!--<columnOverride column="DATE_FIELD" property="startDate" />--> <!--<ignoreColumn column="FRED" />--> <!--<columnOverride column="LONG_VARCHAR_FIELD" jdbcType="VARCHAR" />--> <!--</table>--> </context> </generatorConfiguration>
3、JAVA执行程序代码
package com.tulun; import org.apache.ibatis.io.Resources; 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; import java.io.File; import java.util.ArrayList; import java.util.List; public class Generator { public static void main(String[] args) throws Exception{ List<String> warnings = new ArrayList<String>(); boolean overwrite = true; File configFile = Resources.getResourceAsFile(String.valueOf(new File("mybatis_generator_config.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); } }
项目创建完后生成的目录结构
我们对 MBG 进行了简单介绍,提供了示例。对 MBG了解越多,就越能在使用的时候减少人工操作,节省大量的时间,从枯燥的基础方法中脱离出来,将更多的精力用于复杂或高效的编码中。