MyBatis代码生成器
MyBatis Generator简称MBG,是MyBatis 官方出的代码生成器。MBG能够自动生成实体类、Mapper接口以及对应的XML文件,能够在一定程度上减轻开发人员的工作量。本文介绍了使用MBG Maven插件的使用方法。
第一:IntelliJ IDEA 2018.2.1
第二:JDK 1.8.0_77
第三:Mysql 8.0.17
第四:mysql-connector-java-8.0.17
第五:mybatis-generator-maven-plugin-1.4.0
(一)创建Maven项目
(二)配置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资源目录中添加文件
(四)配置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
2、第二种 配置maven
注意,方式一执行maven命令要加 mvn 前缀,方式二因为本身就是添加maven命令模块,所以不用加 mvn 前缀即可
3、第三种 双击插件配置
(七)运行结果