MyBatis Generator Running with Maven

前言

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&amp;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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值