使用mybatis-generator逆向生成表对应的POJO类

使用mybatis-generator逆向生成表对应的POJO类


环境和版本说明


IDEA 2017.2.7

maven 3.5.3

mybatis 3.4.1

mybatis-generator-core 1.3.6

postgresql 9.6

首先建立数据库表


这里写图片描述

pom.xml 文件中需要的相关依赖包


      <!-- mybatis -->
      <dependency>
          <groupId>org.mybatis</groupId>
          <artifactId>mybatis</artifactId>
          <version>3.4.1</version>
      </dependency>

      <!-- mybatis-generator-core -->
      <dependency>
          <groupId>org.mybatis.generator</groupId>
          <artifactId>mybatis-generator-core</artifactId>
          <version>1.3.6</version>
      </dependency>

      <!-- postgresql -->
      <dependency>
          <groupId>org.postgresql</groupId>
          <artifactId>postgresql</artifactId>
          <version>42.2.2</version>
      </dependency>

添加 mybatis-generator-maven-plugin 插件.

<plugin>
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-maven-plugin</artifactId>
    <version>1.3.6</version>
    <dependencies>
        <!-- mybatis-generator插件需要的依赖, 这里必须添加进来 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.1</version>
        </dependency>
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <version>42.2.2</version>
        </dependency>
    </dependencies>
</plugin>

创建 generatorConfig.xml 配置文件


src/main/resources 包下创建逆向工程配置文件 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="my_tables" targetRuntime="MyBatis3">

        <!-- 注释相关设置 -->
        <commentGenerator>
            <!-- 是否去除自动生成的注释, true: 是; false: 否 -->
            <property name="suppressAllComments" value="true" />
        </commentGenerator>

        <!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
        <jdbcConnection driverClass="org.postgresql.Driver"
                        connectionURL="jdbc:postgresql://127.0.0.1:5432/springboot?charSet=utf-8"
                        userId="postgres"
                        password="password">
        </jdbcConnection>

        <!-- 默认false, 把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer; 为 true 时把 JDBC DECIMAL 和
            NUMERIC 类型解析为 java.math.BigDecimal -->
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false" />
        </javaTypeResolver>

        <!-- 生成POJO类的位置. targetPackage为包名, targetProject为项目位置, 采用相对路径 -->
        <javaModelGenerator targetPackage="com.tao.smp.generator.entity"
                            targetProject="src/main/java">
            <!-- enableSubPackages: 是否让schema作为包的后缀 -->
            <property name="enableSubPackages" value="false" />
        </javaModelGenerator>

        <!-- mapper映射文件生成的位置 -->
        <!--<sqlMapGenerator targetPackage="com.tao.smp.generator.mapper"
                         targetProject="src/main/java">
            &lt;!&ndash; enableSubPackages: 是否让schema作为包的后缀 &ndash;&gt;
            <property name="enableSubPackages" value="false" />
        </sqlMapGenerator>-->

        <!-- mapper接口生成的位置 -->
        <!--<javaClientGenerator type="XMLMAPPER"
                             targetPackage="com.tao.smp.generator.dao"
                             targetProject="src/main/java">
            &lt;!&ndash; enableSubPackages: 是否让schema作为包的后缀 &ndash;&gt;
            <property name="enableSubPackages" value="false" />
        </javaClientGenerator>-->

        <!-- 指定数据库表 -->
        <table schema="" tableName="tb_classroom">
            <domainObjectRenamingRule searchString="^Tb" replaceString="" />
        </table>
        <table schema="" tableName="tb_department">
            <domainObjectRenamingRule searchString="^Tb" replaceString="" />
        </table>
        <table schema="" tableName="tb_employee">
            <domainObjectRenamingRule searchString="^Tb" replaceString="" />
        </table>
        <table schema="" tableName="tb_post">
            <domainObjectRenamingRule searchString="^Tb" replaceString="" />
        </table>
        <table schema="" tableName="tb_student">
            <domainObjectRenamingRule searchString="^Tb" replaceString="" />
        </table>
        <table schema="" tableName="tb_user">
            <domainObjectRenamingRule searchString="^Tb" replaceString="" />
        </table>

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

需要修改的地方:

  1. javaModelGenerator, 生成PO类的位置
  2. sqlMapGenerator, mapper映射文件生成的位置
  3. javaClientGenerator, mapper接口生成的位置
  4. table, 其中tableName属性对应数据库中相应表

注意几点:

1、targetProject位置

<!-- 生成POJO类的位置. targetPackage为包名, targetProject为项目位置, 采用相对路径 -->
<javaModelGenerator targetPackage="com.tao.smp.generator.entity"
                            targetProject="src/main/java">
    <!-- enableSubPackages: 是否让schema作为包的后缀 -->
    <property name="enableSubPackages" value="false" />
</javaModelGenerator>

targetProject表示的是项目的相对位置, 这个相对位置相对的是你执行 mvn mybatis-generator:generate 的位置. 当我们点击IDEA下面一行中的 Terminal 窗口的时候, 打开了命令行界面, 此时项目已经定位到 项目名 下, 因此这里的targetProject的值我们填写 src/main/java , 这是相对于我们的项目名的地址.

targetPackage则是要指定targetProject下的包名.

2、如何去掉生成的POJO实体类的前缀

默认情况下, 生成的POJO实体类和数据库表名是对应的, 也就是说 tb_user 表对应生成的POJO实体类为 TbUser, 要想去掉 Tb 前缀, 可以通过添加 domainObjectRenamingRule 标签来达到目的.

<table schema="" tableName="tb_classroom">
    <domainObjectRenamingRule searchString="^Tb" replaceString="" />
</table>

^ 是正则表达式中表示从起始位置开始匹配的符号. searchString 作用的对象是生成的实体类的名字, 因此这里的是大写的 T.

运行, 生成POJO实体类


点击 IDEA 的 Terminal 进入命令行界面, 输入 mvn mybatis-generator:generate, 回车. 等待 BUILD SUCCESS, 然后就能在对应的包下找到生成的实体类了.

这里写图片描述

猜你喜欢

转载自blog.csdn.net/hbtj_1216/article/details/80744940