一、什么是逆向工程?
简单点说,就是通过数据库中的单表,自动生成java代码。
Mybatis官方提供了逆向工程,可以针对单表自动生成mybatis代码(mapper.java\mapper.xml\po类)
企业中,逆向工程是个很常用的工具,之前我们就学习了hibernate的逆向工程,比我们手动创建映射文件的配置信息方便很多,总是就是很方便。
直接粘代码
Maven 添加 mybatis 依赖
<!--mybatis--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.3.1</version></dependency><!--mapper--><dependency><groupId>tk.mybatis</groupId><artifactId>mapper-spring-boot-starter</artifactId><version>1.2.4</version></dependency><!--pagehelper--><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.2.3</version></dependency><!-- mybatis 逆向生成工具 --><dependency><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-core</artifactId><version>1.3.2</version><scope>compile</scope><optional>true</optional></dependency>
核心jar XML文件生成 -- 不知道为啥 在 生成 Java 和 XML的配置中 targerProject 设置成绝对路径就可以成功 ,相对路径就无法生成
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfigurationPUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN""http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration><context id="MysqlContext" targetRuntime="MyBatis3Simple" defaultModelType="flat"><commentGenerator><!-- 是否去除自动生成的注释(生成的注释是英文的) true:是 : false:否 --><property name="suppressAllComments" value="true" /></commentGenerator><jdbcConnection driverClass="com.mysql.jdbc.Driver"connectionURL="jdbc:mysql://192.168.44.180:3306/springboot"userId="root"password="123456"></jdbcConnection><!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和NUMERIC 类型解析为java.math.BigDecimal --><javaTypeResolver><property name="forceBigDecimals" value="false" /></javaTypeResolver><!-- 对于生成的pojo所在包 --><javaModelGenerator targetPackage="com.imooc.netty.wechart.pojo" targetProject="/Users/tony/Desktop/WEB/wechart/src/main/java"/><!-- 对于生成的mapper所在目录 --><sqlMapGenerator targetPackage="mapper" targetProject="/Users/tony/Desktop/WEB/wechart/src/main/resources"/><!-- 配置mapper对应的java映射 --><javaClientGenerator targetPackage="com.imooc.netty.wechart.mapper" targetProject="/Users/tony/Desktop/WEB/wechart/src/main/java" type="XMLMAPPER"/><!-- 生成的pojo类的属性名和表的列名一致,默认是遇到下划线变驼峰的。比如表中有一列叫user_id,那么默认生成的类属性名是userId --><table tableName="users" ><property name="useActualColumnNames" value="true"/></table><table tableName="my_friends" ><property name="useActualColumnNames" value="true"/></table><table tableName="request" ><property name="useActualColumnNames" value="true"/></table><table tableName="chart_msg" ><property name="useActualColumnNames" value="true"/></table></context>
</generatorConfiguration>
指定 Main 方法 固定写法,解析XML文件
public class GeneratorDisplay {public void generator() throws Exception{List<String> warnings = new ArrayList<String>();boolean overwrite = true;//指定 逆向工程配置文件File configFile = new File("wechart/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);}public static void main(String[] args) {try {GeneratorDisplay generatorSqlmap = new GeneratorDisplay();generatorSqlmap.generator();} catch (Exception e) {e.printStackTrace();}}
}
项目目录结构