前言
MyBatis Generator(MBG) 可以方便地自动生成 MyBatis 的一些相关文件。在 Windows 环境下只要执行 java -jar mybatis-generator-core-1.3.2.jar -configfile generatorConfig.xml -overwrite
即可。也可以将其写成一个 .bat 文件,免去每次输入命令。但是如果换了一种操作系统,那么该方法又失效了。现在还有一种更灵活的方法,那就是用 Maven 插件 将MyBatis Generator 整合到构建当中。
Maven 配置文件
首先,新建一个 Maven项目 mybatis-generator-demo,修改 pom.xml
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.ggli</groupId>
<artifactId>mybatis-generator-demo</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>mybatis-generator-demo</name>
<url>http://maven.apache.org</url>
<build>
<finalName>mybatis-generator-demo</finalName>
<plugins>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>${plugin.mybatis.generator}</version>
<executions>
<execution>
<id>Generate MyBatis Artifacts</id>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<configuration>
<overwrite>true</overwrite>
<verbose>true</verbose>
<!-- <jdbcDriver>com.mysql.jdbc.Driver</jdbcDriver> -->
<!-- <jdbcURL>jdbc:mysql://127.0.0.1:3306/mybatis_basic</jdbcURL> -->
<!-- <jdbcUserId>root</jdbcUserId> -->
<!-- <jdbcPassword></jdbcPassword> -->
<configurationFile>${basedir}/src/main/resources/generatorConfig.xml</configurationFile>
</configuration>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${lib.mysql.connector}</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
<properties>
<!--project setting-->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.build.locales>zh_CN</project.build.locales>
<project.build.jdk>1.7</project.build.jdk>
<!-- plugin setting -->
<mybatis.generator.generatorConfig.xml>${basedir}/src/main/resources/generatorConfig.xml</mybatis.generator.generatorConfig.xml>
<mybatis.generator.generatorConfig.properties>file:///${basedir}/src/main/resources/generatorConfig.properties</mybatis.generator.generatorConfig.properties>
<!--lib version-->
<lib.mybatis>3.3.1</lib.mybatis>
<lib.mysql.connector>5.1.32</lib.mysql.connector>
<lib.junit>4.8.2</lib.junit>
<lib.mybatis.generator>1.3.2</lib.mybatis.generator>
<!--plugin version-->
<plugin.mybatis.generator>1.3.2</plugin.mybatis.generator>
</properties>
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${lib.mybatis}</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${lib.mysql.connector}</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${lib.junit}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>${lib.mybatis.generator}</version>
<type>jar</type>
<scope>test</scope>
</dependency>
</dependencies>
</project>
从上述配置文件中,很容易理解,就是在<build>
标签中引入了插件 mybatis-generator-maven-plugin。
而以下这段代码
<plugin>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${lib.mysql.connector}</version>
</dependency>
</dependencies>
</plugin>
是为了免去在 generatorConfig.xml 中添加 <classPathEntry>
标签来指明 JDBC 驱动,而是让mybatis-generator-maven-plugin 直接引用 Maven 仓库的 JDBC 驱动,免去手动添加驱动路径。
下面这段代码
<executions>
<execution>
<id>Generate MyBatis Artifacts</id>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
作用是在一个持续构建的环境中,让 MyBatis Generator 作为 Maven 构建的一部分自动化执行。
配置 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>
<properties url="${mybatis.generator.generatorConfig.properties}"/>
<!--<classPathEntry-->
<!--location="C:\Users\ggli\.m2\repository\mysql\mysql-connector-java\5.1.32\mysql-connector-java-5.1.32.jar"/>-->
<context id="MySQLTables" targetRuntime="MyBatis3">
<commentGenerator>
<property name="suppressDate" value="true"/>
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<jdbcConnection
driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/mybatis_basic?useUnicode=true&characterEncoding=utf-8"
userId="root"
password=""/>
<javaModelGenerator targetPackage="com.ggli.core.dal.model" targetProject="src/main/java">
<property name="enableSubPackages" value="ture"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<sqlMapGenerator targetPackage="com.ggli.core.dal.mapper" targetProject="src/main/java">
<property name="enableSubPackages" value="ture"/>
</sqlMapGenerator>
<javaClientGenerator type="XMLMAPPER" targetPackage="com.ggli.core.dal.dao" targetProject="src/main/java">
<property name="enableSubPackages" value="ture"/>
</javaClientGenerator>
<table tableName="t_org" domainObjectName="Org"/>
<table tableName="t_role" domainObjectName="Role"/>
<table tableName="t_user" domainObjectName="User"/>
<table tableName="t_user_role" domainObjectName="UserRole"/>
</context>
</generatorConfiguration>
Oracle 数据库的 generatorConfig.xml 版本,在 <jdbcConnection>
中有不同,以及如果在 pom.xml 中的 <plugin>
中没有配置 <dependency>
,就需要在此添加 <classPathEntry>
<classPathEntry location="ojdbc14-10.2.0.3.0.jar"/>
<context id="OracleTables" targetRuntime="MyBatis3">
<jdbcConnection
driverClass="oracle.jdbc.OracleDriver"
connectionURL="jdbc:oracle:thin:@10.102.16.93:1521/orcl"
userId="BMS"
password="1"/>
</context>
生成
可以点击 Edit Configuration...
选择 Maven 项目,在 Command line 后填入 mybatis-generator:generate
,手动点击就可生成 MyBatis 相关文件。
如果遇到错误 Table configuration with catalog null, schema null, and table t_user did not resolve to any tables
,请检查 generatorConfig.xml 中的 <jdbcConnection>
标签是否填写正确。或者该数据库中是否存在该表。
小结
使用 Maven 插件来管理 mybatis-generator 的生成,可以免去查找复制 JDBC 驱动路径,免去使用批处理命令来生成文件,而且可以将插件也纳入 Maven 一起管理,文件直接生成在项目中。
源码:
地址 下载
参考:
http://www.mybatis.org/generator/running/runningWithMaven.html