MyBatis逆向工程的使用(十二)上

简介: MyBatis逆向工程的使用(十二)

一. MyBatis 逆向工程


MyBatis 逆向工程,存放于github, 地址是: https://github.com/mybatis/generator

就是通过数据库表,来自动生成 POJO 实体类和 mapper 中的XxxMapper.java 和XxxMapper.xml 配置文件,只能对单表进行相应的操作,暂时不能生成关联表的映射。 老蝴蝶本文所用的是 1.3.2 版本。


20190715182339153.png


解压之后:


20190716190736363.png

其中,lib包下有:


20190716190843841.png


以mybatis数据库表下的四个表为例。 前面讲关联关系时所用到的表。


20190716191011931.png


为了避免出现文件覆盖,最好是将自动生成代码的逆向工程单纯创建一个项目,然后copy 自动生成的文件到mybatis 项目中。


二. MyBatis 的逆向工程


二.一 创建逆向工程项目 MyBatis_Generator,避免出现文件覆盖。


20190716191249447.png


二.二 创建lib文件夹,放入jar包。


20190716191356119.png


二.三 在mybatis_generator项目下放置generatorConfig.xml 配置文件


注意,放置在整个项目下,与src 同级,并不是放置在src目录下。


20190716191502631.png


二.四 在generator包下创建 GeneratorSqlmap.java 类来自动生成代码


package generator;
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 GeneratorSqlmap {
  public void generator() 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);
  } 
  public static void main(String[] args) throws Exception {
    try {
      GeneratorSqlmap generatorSqlmap = new GeneratorSqlmap();
      generatorSqlmap.generator();
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}


二.五 创建好逆向工程的整个目录结构


20190716191733187.png


二.六 generatorConfig.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>
  <context id="mybatisTest" targetRuntime="MyBatis3">
    <commentGenerator>
      <!-- 是否去除自动生成的注释 true:是 : false:否 -->
      <property name="suppressAllComments" value="true" />
      <!--去除日期注释-->
       <property name="suppressDate" value="true"/>
    </commentGenerator>
    <!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
    <jdbcConnection driverClass="com.mysql.jdbc.Driver"
      connectionURL="jdbc:mysql://localhost:3306/mybatis" userId="root"
      password="abc123">
    </jdbcConnection>
    <!-- 关于oracle的数据库连接信息 -->
    <!-- <jdbcConnection driverClass="oracle.jdbc.OracleDriver"
      connectionURL="jdbc:oracle:thin:@127.0.0.1:1521:orcl" 
      userId="scott"
      password="abc123">
    </jdbcConnection> -->
    <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和 
      NUMERIC 类型解析为java.math.BigDecimal -->
    <javaTypeResolver>
      <property name="forceBigDecimals" value="false" />
    </javaTypeResolver>
    <!-- targetProject:生成POJO类的位置 -->
    <javaModelGenerator targetPackage="com.yjl.pojo"
      targetProject=".\src">
      <!-- enableSubPackages:是否让schema作为包的后缀 -->
      <property name="enableSubPackages" value="false" />
      <!-- 从数据库返回的值被清理前后的空格 -->
      <property name="trimStrings" value="true" />
    </javaModelGenerator>
        <!-- targetProject:mapper映射文件生成的位置 -->
    <sqlMapGenerator targetPackage="com.yjl.mapper" 
      targetProject=".\src">
      <!-- enableSubPackages:是否让schema作为包的后缀 -->
      <property name="enableSubPackages" value="false" />
    </sqlMapGenerator>
    <!-- targetPackage:mapper接口生成的位置 -->
    <javaClientGenerator type="XMLMAPPER"
      targetPackage="com.yjl.mapper" 
      targetProject=".\src">
      <!-- enableSubPackages:是否让schema作为包的后缀 -->
      <property name="enableSubPackages" value="false" />
    </javaClientGenerator>
    <!-- 指定数据库表,哪些单表-->
    <table tableName="user"></table>
    <table tableName="dept"></table>
    <table tableName="role"></table>
    <table tableName="idcard"></table>
    <!-- 有些表的字段需要指定java类型
     <table schema="" tableName="">
      <columnOverride column="" javaType="" />
    </table> -->
  </context>
</generatorConfiguration>


其中,关于generatorConfig.xml 配置文件详细解释,可以参考 :https://blog.csdn.net/mashuai720/article/details/80804790 (不知道这位前辈的转载原处地址,所以无法贴出正确的原始地址,还请理解)。


二.七 运行GeneratorSqlmap 类,看控制台输出。


老蝴蝶的输出是: 其中column 为那些表下的列名。 根据不同的表,会有不同的输出情况。


2019-07-16 19:24:08,106 [main] DEBUG [org.mybatis.generator.internal.db.DatabaseIntrospector] - Retrieving column information for table "user"
2019-07-16 19:24:08,122 [main] DEBUG [org.mybatis.generator.internal.db.DatabaseIntrospector] - Found column "id", data type 4, in table "mybatis..user"
2019-07-16 19:24:08,122 [main] DEBUG [org.mybatis.generator.internal.db.DatabaseIntrospector] - Found column "name", data type 12, in table "mybatis..user"
2019-07-16 19:24:08,122 [main] DEBUG [org.mybatis.generator.internal.db.DatabaseIntrospector] - Found column "age", data type 4, in table "mybatis..user"
2019-07-16 19:24:08,123 [main] DEBUG [org.mybatis.generator.internal.db.DatabaseIntrospector] - Found column "sex", data type 12, in table "mybatis..user"
2019-07-16 19:24:08,123 [main] DEBUG [org.mybatis.generator.internal.db.DatabaseIntrospector] - Found column "description", data type 12, in table "mybatis..user"
2019-07-16 19:24:08,125 [main] DEBUG [org.mybatis.generator.internal.db.DatabaseIntrospector] - Retrieving column information for table "dept"
2019-07-16 19:24:08,128 [main] DEBUG [org.mybatis.generator.internal.db.DatabaseIntrospector] - Found column "id", data type 4, in table "mybatis..dept"
2019-07-16 19:24:08,128 [main] DEBUG [org.mybatis.generator.internal.db.DatabaseIntrospector] - Found column "name", data type 12, in table "mybatis..dept"
2019-07-16 19:24:08,128 [main] DEBUG [org.mybatis.generator.internal.db.DatabaseIntrospector] - Found column "description", data type 12, in table "mybatis..dept"
2019-07-16 19:24:08,130 [main] DEBUG [org.mybatis.generator.internal.db.DatabaseIntrospector] - Retrieving column information for table "role"
2019-07-16 19:24:08,133 [main] DEBUG [org.mybatis.generator.internal.db.DatabaseIntrospector] - Found column "id", data type 4, in table "mybatis..role"
2019-07-16 19:24:08,133 [main] DEBUG [org.mybatis.generator.internal.db.DatabaseIntrospector] - Found column "name", data type 12, in table "mybatis..role"
2019-07-16 19:24:08,133 [main] DEBUG [org.mybatis.generator.internal.db.DatabaseIntrospector] - Retrieving column information for table "idcard"
2019-07-16 19:24:08,137 [main] DEBUG [org.mybatis.generator.internal.db.DatabaseIntrospector] - Found column "id", data type 4, in table "mybatis..idcard"
2019-07-16 19:24:08,137 [main] DEBUG [org.mybatis.generator.internal.db.DatabaseIntrospector] - Found column "idnum", data type 12, in table "mybatis..idcard"


刷新项目,F5, 便可以观察到自动生成的代码。


20190716192556258.png


将 mapper 和pojo 包下 copy 到MyBatis 项目中即可。

相关文章
|
1月前
|
XML Java 数据库连接
mybatis-plus逆向工程详解
mybatis-plus逆向工程详解
176 0
|
10月前
|
XML Java 数据库连接
Mybatis使用generator逆向工程生成器生成entity、mapper、.xml模版类
今天将表建好了,但是一个一个的建实体类、Mapper接口、Mapper.xml文件就十分的麻烦,所以我就想到了MyBatis逆向,今天就操作一把!这里我们采用maven来进行操作。
157 0
|
1月前
|
Java 数据库连接 数据库
Mybatis逆向工程笔记小结
Mybatis逆向工程笔记小结
|
1月前
|
XML Java 数据库连接
Mybatis逆向工程的2种方法,一键高效快速生成Pojo、Mapper、XML,摆脱大量重复开发
【5月更文挑战第10天】Mybatis逆向工程的2种方法,一键高效快速生成Pojo、Mapper、XML,摆脱大量重复开发
28 6
|
1月前
|
数据库
Springboot+mybatis-plus逆向工程生成代码器
Springboot+mybatis-plus逆向工程生成代码器
|
10月前
|
XML Java 数据库连接
优雅地使用Mybatis逆向工程生成类
优雅地使用Mybatis逆向工程生成类
78 1
|
1月前
|
SQL Java 数据库连接
MyBatis之逆向工程
【1月更文挑战第4天】 正向工程:先创建Java实体类,由框架负责根据实体类生成数据库表。Hibernate是支持正向工程的 逆向工程:先创建数据库表,由框架负责根据数据库表,反向生成如下资源: Java实体类 Mapper接口 Mapper映射文件
44 2
|
10月前
|
SQL 运维 前端开发
Mybatis-Plus之逆向工程之旅
Mybatis-Plus之逆向工程之旅
107 0
|
1月前
|
Java 数据库连接 Maven
MyBatis逆向工程可以生成哪些内容?
MyBatis逆向工程可以生成哪些内容?
25 0
|
1月前
|
SQL Java 数据库连接
MyBatis的逆向工程
MyBatis的逆向工程