MyBatis代码生成器


MyBatis Generator简称MBG,是MyBatis 官方出的代码生成器。MBG能够自动生成实体类、Mapper接口以及对应的XML文件,能够在一定程度上减轻开发人员的工作量。本文介绍了使用MBG Maven插件的使用方法。

第一:IntelliJ IDEA 2018.2.1

java mybatis快速生成java类 mybatis代码生成工具_maven

第二:JDK 1.8.0_77

第三:Mysql 8.0.17

java mybatis快速生成java类 mybatis代码生成工具_Mybatis_02

第四:mysql-connector-java-8.0.17

第五:mybatis-generator-maven-plugin-1.4.0


(一)创建Maven项目

java mybatis快速生成java类 mybatis代码生成工具_mysql_03

(二)配置pom.xml

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.wms</groupId>
  <artifactId>Maven_MyBatisGenerator</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>

  <name>Maven_MyBatisGenerator Maven Webapp</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
    <mbg.version>1.4.0</mbg.version>
    <mysql.version>8.0.17</mysql.version>
    <!--  Java接口和实体类生成路径
      targetMapperPackage是生成的接口包名
      targetModelPackage是生成的实体类包名
      -->
    <targetJavaProject>${basedir}/src/main/java</targetJavaProject>
    <!--  XML生成路径  -->
    <targetResourcesProject>${basedir}/src/main/resources</targetResourcesProject>
    <!-- MyBatis Generator mapper接口的生成位置 -->
    <targetMapperPackage>com.wms.dao</targetMapperPackage>
    <!-- MyBatis Generator model类的生成位置 -->
    <targetModelPackage>com.wms.model</targetModelPackage>
    <!-- MyBatis Generator mapper.xml生成位置 -->
    <targetXMLPackage>mapper</targetXMLPackage>
  </properties>

  <dependencies>
  <!--  <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>-->
    <!-- mybatis依赖  -->
    <dependency>
      <groupId>org.mybatis.generator</groupId>
      <artifactId>mybatis-generator-core</artifactId>
      <version>${mbg.version}</version>
    </dependency>
  </dependencies>

  <build>
    <finalName>Maven_MyBatisGenerator</finalName>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.22.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-war-plugin</artifactId>
          <version>3.2.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>
      </plugins>
    </pluginManagement>
    <plugins>
      <plugin>
        <!--  MBG插件  -->
        <groupId>org.mybatis.generator</groupId>
        <artifactId>mybatis-generator-maven-plugin</artifactId>
        <version>${mbg.version}</version>
        <!--  MBG配置文件路径  -->
        <configuration>
          <!--允许移动生成的文件 -->
          <verbose>true</verbose>
          <!-- 是否覆盖 -->
          <overwrite>true</overwrite>
          <!-- 自动生成的配置 -->
          <configurationFile>${basedir}/src/main/resources/generator_config.xml</configurationFile>
        </configuration>
        <dependencies>
          <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysql.version}</version>
          </dependency>
        </dependencies>
      </plugin>
    </plugins>
  </build>
</project>

(三)/src/main/resources资源目录中添加文件

java mybatis快速生成java类 mybatis代码生成工具_Generator_04

java mybatis快速生成java类 mybatis代码生成工具_Maven_05

(四)配置db.properties

jdbc.driver=com.mysql.cj.jdbc.Driver
db.url=jdbc:mysql://localhost:3306/manager?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=false
db.username=root
db.password=xxxx

注意1:JDBC连接Mysql5 com.mysql.jdbc.Driver 

注意2:JDBC连接Mysql6+ com.mysql.cj.jdbc.Driver, 需要指定时区serverTimezone

在设定时区的时候,如果设定serverTimezone=UTC,会比中国时间早8个小时,如果在中国,可以选择Asia/Shanghai或者Asia/Hongkong 

(五)配置MBG文件generator_config.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>

    <!--  mysql数据源配置文件路径  -->
    <properties resource="db.properties"/>

    <context id="Mysql" targetRuntime="MyBatis3Simple" defaultModelType="flat">
        <!--autoDelimitKeywords,当表名或者字段名为SQL关键字的时候,可以设置该属性为true,MBG会自动给表名或字段名添加分隔符-->
        <property name="autoDelimitKeywords" value="true"/>
        <!--beginningDelimiter和endingDelimiter的默认值为双引号("),在Mysql中不能这么写,所以还要将这两个默认值改为反单引号(`)-->
        <property name="beginningDelimiter" value="`"/>
        <property name="endingDelimiter" value="`"/>

        <commentGenerator>
            <!-- 是否去除自动生成的注释 true:是 : false:否 -->
            <property name="suppressAllComments" value="true"/>
            <!--阻止生成的注释包含时间戳-->
            <property name="suppressDate" value="true"/>
        </commentGenerator>

        <!--数据库链接地址账号密码-->
        <jdbcConnection driverClass="${jdbc.driver}"
                        connectionURL="${db.url}"
                        userId="${db.username}"
                        password="${db.password}">
        </jdbcConnection>

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

        <!--生成实体类存放位置-->
        <javaModelGenerator targetPackage="${targetModelPackage}"
                            targetProject="${targetJavaProject}" />
        <!--生成XML映射文件存放位置-->
        <sqlMapGenerator targetPackage="${targetXMLPackage}"
                         targetProject="${targetResourcesProject}" />
        <!--生成接口存放位置-->
        <!-- 客户端代码,生成易于使用的针对Model对象和XML配置文件 的代码
                type="ANNOTATEDMAPPER",生成Java Model 和基于注解的Mapper对象
                type="MIXEDMAPPER",生成基于注解的Java Model 和相应的Mapper对象
                type="XMLMAPPER",生成SQLMap XML文件和独立的Mapper接口
        -->
        <javaClientGenerator targetPackage="${targetMapperPackage}"
                             targetProject="${targetJavaProject}" type="XMLMAPPER" />
        <!--生成对应表及类名,包括Example类-->
        <table tableName="sys_user" domainObjectName="User">
            <!--添加属性useActualColumnNames为true,那么生成的对象字段就跟表一样-->
            <property name="useActualColumnNames" value="true"/>
        </table>
        <!--生成对应表及类名-->
      <!--  <table tableName="sys_user" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false">
            <!–添加属性useActualColumnNames为true,那么生成的对象字段就跟表一样–>
            <property name="useActualColumnNames" value="true"/>
        </table>-->
        <!--生成全部的表-->
        <!--<table tableName="%">
            <!–添加属性useActualColumnNames为true,那么生成的对象字段就跟表一样–>
            <property name="useActualColumnNames" value="true"/>
        </table>-->
    </context>

</generatorConfiguration>

(六)运行三种方式

1、第一种 左下角Terminal 点击,直接输入命令: mvn mybatis-generator:generate

注意: 需要配置环境MAVEN_HOME

java mybatis快速生成java类 mybatis代码生成工具_Generator_06

2、第二种 配置maven

java mybatis快速生成java类 mybatis代码生成工具_maven_07

注意,方式一执行maven命令要加 mvn 前缀,方式二因为本身就是添加maven命令模块,所以不用加 mvn 前缀即可

java mybatis快速生成java类 mybatis代码生成工具_Mybatis_08

java mybatis快速生成java类 mybatis代码生成工具_Mybatis_09

3、第三种 双击插件配置

java mybatis快速生成java类 mybatis代码生成工具_Generator_10

(七)运行结果

java mybatis快速生成java类 mybatis代码生成工具_maven_11

java mybatis快速生成java类 mybatis代码生成工具_Generator_12