逆向工程(mybatis版本&mybatis-plus版本)

目录

一、创建项目

二、mybatis版本

1.until包中创建一个Generator.java文件 :

2.generatorConfig.xml

 3.运行Generator.java文档

 三、mybatis-plus版本

1. 改pom.xml依赖

2. 用FastAutoGeneratorTest.java替代Generator.java


逆向工程(Reverse Engineering)是一种通过对产品、系统或软件的成品进行分析,从而推导出其设计原理、实现方法、技术细节等过程的方法。其核心思想是从现有的成果出发,反向探索其开发过程中的关键要素。

一、创建项目

仍旧是实战展示学习逆向工程,不管是用mybatis还是mybatis-plus,肯定都要先创建项目把架子搭起来。

因为这里主要是学习逆向工程生成,即侧重数据库的后端方面,所以这里只需要创建一个Java的maven工程,如果还想连带着展示前端,可以创建一个maven的javaweb项目。

我这里是2021的idea,其他版本大同小异

依赖只需要这四个:

    <dependencies>
        <!-- MyBatis Plus Starter -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.7</version> <!-- 使用更新的版本 -->
        </dependency>

        <!-- MySQL Connector -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

        <!-- Lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

        <!-- Spring Boot Starter Test -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!--代码生成工具-->
        <dependency>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-core</artifactId>
            <version>1.3.6</version>
        </dependency>
        <!--更方便地配置 MyBatis-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.1</version>
        </dependency>
    </dependencies>

 在这里只需要一个maven的Java项目(然后把它加上springboot启动类和依赖--也可以直接创建一个springboot项目),然后连接随便库的随便表即可。

二、mybatis版本

创建如下的目录结构:

1.until包中创建一个Generator.java文件 :

package com.qcby.reversetest01.util;

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 void generator() throws Exception {
        List<String> warnings = new ArrayList<String>();
        boolean overwrite = true;
        /**指向逆向工程配置文件*/
        File configFile = new File("reversetest01/src/main/resources/generatorConfig.xml");
        ConfigurationParser parser = new ConfigurationParser(warnings);
        Configuration config = parser.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 {
            Generator generatorSqlmap = new Generator();
            generatorSqlmap.generator();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

当然需要自行更改一下里面的项目名:

如果这样报错的话,可以写上全路径:
 

2.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="mybatisGenerator" >
        <commentGenerator>
            <!-- 是否去除自动生成的注释 true:是 : false:否 -->
            <property name="suppressAllComments" value="true" />
        </commentGenerator>
        <!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
<!--修改成自己的数据库和密码-->
        <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/mybatis_plus_1?characterEncoding=utf-8&amp;useSSL=false" userId="root"
                        password="2020">
        </jdbcConnection>
        <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和
            NUMERIC 类型解析为java.math.BigDecimal -->
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false" />
        </javaTypeResolver>
<!--改成自己生成实体类的位置和项目名称-->
        <!-- targetProject:生成PO类的位置 -->
        <javaModelGenerator targetPackage="com.qcby.reversetest01.entity"
                            targetProject="D:/001_Myclass001/javava/reversetest01\src\main\java">
            <!-- enableSubPackages:是否让schema作为包的后缀 -->
            <property name="enableSubPackages" value="false" />
            <!-- 从数据库返回的值被清理前后的空格 -->
            <property name="trimStrings" value="true" />
        </javaModelGenerator>
        <!-- targetProject:mapper映射文件生成的位置 -->
        <sqlMapGenerator targetPackage="mapper"
                         targetProject="D:/001_Myclass001/javava/reversetest01\src\main\resources">
            <!-- enableSubPackages:是否让schema作为包的后缀 -->
            <property name="enableSubPackages" value="false" />
        </sqlMapGenerator>
        <!-- targetPackage:mapper接口生成的位置 -->
        <javaClientGenerator type="XMLMAPPER"
                             targetPackage="com.qcby.reversetest01.mapper"
                             targetProject="D:/001_Myclass001/javava/reversetest01\src\main\java">
            <!-- enableSubPackages:是否让schema作为包的后缀 -->
            <property name="enableSubPackages" value="false" />
        </javaClientGenerator>
        <!-- 指定数据库表 -->
        <table tableName="t_product" enableCountByExample="false"
               enableUpdateByExample="false" enableDeleteByExample="false"
               enableSelectByExample="false" selectByExampleQueryId="false"/>


        <!-- 有些表的字段需要指定java类型
         <table schema="" tableName="">
            <columnOverride column="" javaType="" />
        </table> -->
    </context>
</generatorConfiguration>

当然这里面还有几个需要修改的部分:

 同理,里面所有关于项目名称和路径相关的部分都要改(不行就换成全路径)。

如果在后面运行Generator.java出错服务器未连接的话,可以将这里的时区自行编辑:
 

复制自己之前能用的项目即可

除此之外,在最后这里连接数据库的表名也要自行设置好:

 3.运行Generator.java文档

实现上面的所有配置后就可以运行文档,就可以看到:

项目自动为我们生成了这几个文档。

 三、mybatis-plus版本

mybatis-plus版本的逆向工程比mybatis的更强大,更好用,更便捷;下面我们来演示它的使用方式。

1. 改pom.xml依赖

在这里我们不令创项目了,就还用这一个展示,所以首先把依赖改成下面的:

<dependencies>
        <!-- MyBatis Plus Starter -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.7</version> <!-- 使用更新的版本 -->
        </dependency>

        <!-- MySQL Connector -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

        <!-- Lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

        <!-- Spring Boot Starter Test -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!--引入依赖代码生成器-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.5.1</version>
        </dependency>
        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.31</version>
        </dependency>
    </dependencies>

2. 用FastAutoGeneratorTest.java替代Generator.java

修改依赖后,Generator.java就会失效报错,所以需要将Generator.java文件整个注释掉。

package com.qcby.reversetest01.util;

import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;

import java.util.Collections;

public class FastAutoGeneratorTest {

    public static void main(String[] args) {
        FastAutoGenerator.create("jdbc:mysql://127.0.0.1:3306/mybatis_plus_1?characterEncoding=utf-8&useSSL=false", "root", "2020")
                .globalConfig(builder -> {
                    builder.author("qcby") // 设置作者
                            .outputDir("D:/001_Myclass001/javava/reversetest01"); // 指定输出目录
                })
                .packageConfig(builder -> {
                    builder.parent("com.qcby") // 设置父包名
                            .moduleName("reversetest01") // 设置父包模块名
                            .pathInfo(Collections.singletonMap(OutputFile.mapperXml, "D:/001_Myclass001/javava/reversetest01")); // 设置mapperXml生成路径
                })
                .strategyConfig(builder -> {
                    builder.addInclude("t_product") // 设置需要生成的表名
                            .addTablePrefix("t_", "c_"); // 设置过滤表前缀
                })
                .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker 引擎模板,默认的是Velocity引擎模板
                .execute();
    }
}

同样,里面的路径或是项目名称按照需求更改。

然后启动它,可以看见:

这里我的生成路径没弄好,但是可以看出mybatis-plus版本的生成功能比mybatis版本的更强大。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值