mybatis系列之 mybatis-generator的使用
引言
最近在开发中,需要使用mybatis作为项目的持久化框架,由于涉及大量的数据库表,所以借助于mybatis-generator逆向自动生成domain、mapper与mapper.xml。由于我司使用的是oracle数据库,现市场上互联网项目大多数使用的mysql项目,所以在此将基于oracle与mysql两种数据库,如何使用mybatis-generator自动生成相关信息都实作了一把,作为后期查询提供参考。
基于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.garlic</groupId>
<artifactId>mybatis-generator</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency>
</dependencies>
<profiles>
<profile>
<id>mysql</id>
<properties>
<dbType>mysql</dbType>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>oracle</id>
<properties>
<dbType>oracle</dbType>
</properties>
</profile>
</profiles>
<build>
<finalName>mybatis-generator</finalName>
<plugins>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.5</version>
<configuration>
<configurationFile>src/main/resources/${dbType}/generator-config.xml</configurationFile>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
<executions>
<execution>
<id>Generate MyBatis Artifacts</id>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.5</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</project>
使用mybatis-generator自动生成基于mysql数据库的相关domain实体与mapper信息
配置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">
<!-- mybatis 自定生成类配置文件配置信息 -->
<generatorConfiguration>
<!-- 数据库驱动jar包的位置 -->
<classPathEntry location="/Users/ios-dev/java_web/mybatis-generator/src/main/resources/mysql/mysql-connector-java-5.1.42.jar" />
<context id="MYSQLTables" targetRuntime="MyBatis3">
<!-- 取消自动生成的类及方法的注释信息 -->
<commentGenerator>
<property name="suppressDate" value="true"/>
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<!-- JDBC连接的相关配置 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/garlic"
userId="root"
password="123456" />
<javaTypeResolver>
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<!-- domain位置 -->
<javaModelGenerator targetPackage="com.garlic.domain"
targetProject="/Users/ios-dev/java_web/mybatis-generator/src/main/java">
<property name="enableSubPackage" value="true"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!-- mapper位置 -->
<sqlMapGenerator targetPackage="mapper"
targetProject="/Users/ios-dev/java_web/mybatis-generator/src/main/resources">
<property name="enableSubPackage" value="true"/>
</sqlMapGenerator>
<!-- mapper.xml位置 -->
<javaClientGenerator type="XMLMAPPER"
targetPackage="com.garlic.mapper"
targetProject="/Users/ios-dev/java_web/mybatis-generator/src/main/java">
<property name="enableSubPackage" value="true"/>
</javaClientGenerator>
<!-- 数据库表的配置 -->
<table tableName="sys_user"
domainObjectName="SysUser"
enableCountByExample="true"
enableDeleteByExample="true"
enableDeleteByPrimaryKey="true"
enableSelectByExample="true"
selectByPrimaryKeyQueryId="true">
</table>
</context>
</generatorConfiguration>
执行mvn命令
mvn mybatis-generator:generate -P mysql
使用mybatis-generator自动生成基于oracle数据库的相关domain实体与mapper信息
配置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">
<!-- mybatis 自定生成类配置文件配置信息 -->
<generatorConfiguration>
<!-- 数据库驱动jar包的位置 -->
<classPathEntry location="/Users/ios-dev/java_web/mybatis-generator/src/main/resources/oracle/ojdbc6-11.2.0.4.0-atlassian-hosted.jar" />
<context id="MYSQLTables" targetRuntime="MyBatis3">
<!-- 取消自动生成的类及方法的注释信息 -->
<commentGenerator>
<property name="suppressDate" value="true"/>
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<!-- JDBC连接的相关配置 -->
<jdbcConnection driverClass="oracle.jdbc.driver.OracleDriver"
connectionURL="jdbc:oracle:thin:@192.168.201.31:1521:wlzf"
userId="h5app"
password="h5app"/>
<javaTypeResolver>
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<!-- domain位置 -->
<javaModelGenerator targetPackage="com.garlic.domain"
targetProject="/Users/ios-dev/java_web/mybatis-generator/src/main/java">
<property name="enableSubPackage" value="true"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!-- mapper位置 -->
<sqlMapGenerator targetPackage="mapper"
targetProject="/Users/ios-dev/java_web/mybatis-generator/src/main/java/resources">
<property name="enableSubPackage" value="true"/>
</sqlMapGenerator>
<!-- mapper.xml位置 -->
<javaClientGenerator type="XMLMAPPER"
targetPackage="com.garlic.mapper"
targetProject="/Users/ios-dev/java_web/mybatis-generator/src/main/java">
<property name="enableSubPackage" value="true"/>
</javaClientGenerator>
<!-- 数据库表的配置 -->
<table tableName="SYS_ROLE"
domainObjectName="SysRole"
enableCountByExample="true"
enableDeleteByExample="true"
enableDeleteByPrimaryKey="true"
enableSelectByExample="true"
selectByPrimaryKeyQueryId="true">
</table>
</context>
</generatorConfiguration>
执行mvn命令
mvn mybatis-generator:generate -P oracle