mybatis逆向工程的使用

逆向工程​​​​​​

一、概念与机制

1、概念

  • 正向工程:先创建Java实体类,由框架负责根据实体类生成数据库表。Hibernate是支持正向工程的。

  • 逆向工程:先创建数据库表,由框架负责根据数据库表,反向生成如下资源:
    Java实体类
    Mapper接口
    Mapper配置文件

2、基本原理

 

二、操作

 配置pom.xml 

<!-- 依赖MyBatis核心包 -->
<dependencies>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.7</version>
    </dependency>
</dependencies>
    
<!-- 控制Maven在构建过程中相关配置 -->
<build>
        
    <!-- 构建过程中用到的插件 -->
    <plugins>
        
        <!-- 具体插件,逆向工程的操作是以构建过程中插件形式出现的 -->
        <plugin>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-maven-plugin</artifactId>
            <version>1.3.0</version>
    
            <!-- 插件的依赖 -->
            <dependencies>
                
                <!-- 逆向工程的核心依赖 -->
                <dependency>
                    <groupId>org.mybatis.generator</groupId>
                    <artifactId>mybatis-generator-core</artifactId>
                    <version>1.3.2</version>
                </dependency>
                    
                <!-- 数据库连接池 -->
                <dependency>
                    <groupId>com.mchange</groupId>
                    <artifactId>c3p0</artifactId>
                    <version>0.9.2</version>
                </dependency>
                    
                <!-- MySQL驱动 -->
                <dependency>
                    <groupId>mysql</groupId>
                    <artifactId>mysql-connector-java</artifactId>
                    <version>5.1.8</version>
                </dependency>
            </dependencies>
        </plugin>
    </plugins>
</build>

 

2、MBG配置文件

文件名必须是:generatorConfig.xml

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>
  <!--
   targetRuntime常用值:
      MyBatis3Simple(只生成基本的CRUD和少量的动态SQL)
      MyBatis3(生成完整的CRUD,包含CriteriaAPI方法Example后缀的方法)
   -->
      <!-- 引入第三方依赖包 -->
  <!--<classPathEntry location=".\lib\mysql-connector-java-8.0.12.jar" />-->

  <classPathEntry
          location="D:/BaiduNetdiskDownload/4_CRM项目/resource/jarproperties/mysql/mysql-connector-java-8.0.11.jar"/>
  <context id="localhost_mysql" targetRuntime="MyBatis3Simple">

    <!-- 不生成注释 -->
    <commentGenerator>
      <property name="suppersData" value="false"/>
      <property name="suppersAllComments" value="false"/>
    </commentGenerator>

    <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                    connectionURL="jdbc:mysql://localhost:3306/crm-2022?characterEncoding=utf8&amp;serverTimezone=UTC&amp;useSSL=false"
                    userId="root"
                    password="snd123456">
      <!-- 如果连接的是mysql需要加上这个配置,应为mysql不支持catalog和schema,如果多个库中有相同名称的表,会重复生成代码 -->
      <property name="nullCatalogMeansCurrent" value="true" />
    </jdbcConnection>

    <javaTypeResolver >
      <property name="forceBigDecimals" value="false" />
    </javaTypeResolver>
    <!-- 生成实体类   targetPackage  生成包在Java下的地址      targetProject在磁盘中的位置   -->
    <javaModelGenerator targetPackage="com.snd.crm.settings.pojo" targetProject="E:/资源库/项目/CRM客户管理系统/crm_snd/src/main/java">
      <property name="enableSubPackages" value="false" />
      <property name="trimStrings" value="true" />
      <property name="constructorBased" value="false"/>
      <property name="immutable" value="false"/>
    </javaModelGenerator>
    <!-- 生成XML Mapper -->
    <sqlMapGenerator targetPackage="com.snd.crm.settings.mapper" targetProject="E:/资源库/项目/CRM客户管理系统/crm_snd/src/main/java">
      <property name="enableSubPackages" value="false" />
    </sqlMapGenerator>

    <!-- 生成Mapper接口 -->
    <!-- 生成的Mapper类型:ANNOTATEDMAPPER(注解)、MIXEDMAPPER(混合)、XMLMAPPER(XML) -->
    <javaClientGenerator type="XMLMAPPER" targetPackage="com.snd.crm.settings.mapper"  targetProject="E:/资源库/项目/CRM客户管理系统/crm_snd/src/main/java">
      <!-- 是否将数据库中的schema作为包名的一部分,默认就是false -->
      <property name="enableSubPackages" value="false" />
    </javaClientGenerator>

    <!-- 完全限定一张表:catalog名称.schema名称.表名(如果多个库中有同名的表必须配置)
        其实Mysql根本不支持catalog和schema,建议不要配置这两个,使用jdbcConnection标签中的nullCatalogMeansCurrent配置项解决
    -->
    <!--
    <table catalog="lanou" schema="lanou" tableName="book">
    -->
    <!-- 一个table标签对应着数据库中一个表 -->
    <table tableName="tbl_user">
      <!-- 是否用数据库中的字段名作为POJO属性名(不自动转小驼峰),默认值是false -->
      <!--
      <property name="useActualColumnNames" value="true"/>
      -->
      <!-- 生成代码时支持获取插入数据后自增的ID, 需要通过sqlStatement配置数据库类型。 -->
      <generatedKey column="id" sqlStatement="mysql" identity="true" />
      <!-- 此标签用于在生成代码时忽略数据库中的某个字段 -->
      <!--
      <ignoreColumn column="FRED" />
      -->
      <!-- 通过此标签重写mybatis从数据库读到的元信息,自定义列相关配置,包括(名称、类型) -->
      <!--
      <columnOverride column="aa" property="sname" />
      -->
    </table>
  </context>
</generatorConfiguration>

 

注意:自己配置具体的信息,如数据库连接、包名、对应的表

3、执行MBG插件的generate目标

 

 

4、效果

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

为衣渐宽终不悔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值