mybatis-generator代码生成工具自动生成Model、Dao、Mapper代码


mybatis-generator代码生成工具自动生成Model、Dao、Mapper代码

mybatis-geneator 是一款 mybatis 自动代码生成工具,MyBatis 属于半自动化的 ORM 框架,需要手动书写 Mapping 映射文件,mybatis-gennerator 可以帮助我们自动生成 mybatis 所需要的 Model、Dao、mapper xml 文件。

mybatis-geneator 有如下几种使用方式:

  • 命令行
  • Java 程序
  • Maven 插件
  • Eclipse 插件
  • Ant 方式

不管哪种方式,核心都需要一个配置文件 generatorConfig.xml,该文件包含了连接数据库参数;生成的 Model、Dao、Mapper 目标路径;指定数据库表;类型的转换处理等配置,以下为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>
    <!-- 数据库驱动:选择你的本地硬盘上面的数据库驱动包-->
    <classPathEntry
            location="E:\java_tfd\apache-maven-3.2.5-bin\repository\mysql\mysql-connector-java\5.1.47\mysql-connector-java-5.1.47.jar"/>
    <context id="DB2Tables" targetRuntime="MyBatis3">
        <commentGenerator>
            <property name="suppressDate" value="true"/>
            <!-- 是否去除自动生成的注释 true:是 : false:否 -->
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>
        <!--数据库链接 URL,用户名、密码 -->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost/hiov"
                        userId="root" password="root">
        </jdbcConnection>
        <javaTypeResolver>
            <!-- 默认 false,把 JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true 时把 JDBC DECIMAL 和 NUMERIC 类型解析为 java.math.BigDecimal -->
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>
        <!-- 生成模型的包名和位置-->
        <javaModelGenerator targetPackage="com.huatec.hiot.iov.entity"
                            targetProject="target\java">
            <!-- enableSubPackages:是否让 schema 作为包的后缀 -->
            <property name="enableSubPackages" value="true"/>
            <!-- 从数据库返回的值被清理前后的空格 -->
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>
        <!-- 生成映射文件的包名和位置-->
        <sqlMapGenerator targetPackage="sqlmapper.iov"
                         targetProject="target\resources">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>
        <!-- 生成 DAO 的包名和位置-->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.huatec.hiot.iov.dao"
                             targetProject="target\java">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>
        <!-- 要生成的表 tableName 是数据库中的表名或视图名 domainObjectName 是实体类名-->
        <table tableName="user_emergcontact" domainObjectName="UserEmergcontact" enableCountByExample="false"
               enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false"
               selectByExampleQueryId="false"></table>
    </context>
</generatorConfiguration>

说明:

  • 数据库驱动可以通过上面 classPathEntry ->location 指定本地驱动 jar 文件位置,也可以直接在项目中引入 jar 依赖。就可以省略该 classPathEntry ->location 配置
  • 上面生成 Model、Dao、Mapper 的目录 targetProject 我直接指定的相对路径,也可以使用本地绝对路径(路径一定要写对,否则无法生成代码文件)
  • 生成代码文件的最终路径是 targetProject + targetPackage
  • 一个数据库表对应一个<table>,所以可以同时指定多个<table>

下面就命令行、Java 程序、Maven 插件三种运行方式进行展开讲解。其他方式参见官方文档:http://www.mybatis.org/generator/

一、命令行

首先下载 Mybatis-Generator jar 包,可以到这个地址下载:https://github.com/mybatis/generator/releases ,这里我下载mybatis-generator-core-1.3.5.jar

接着,将mybatis-generator-core-1.3.5.jar 和 generatorConfig.xml放在同一个目录下

mybatis-generator代码生成工具自动生成Model、Dao、Mapper代码-打不死的小强

最后,在该目录打开命令行,执行如下命令

java -jar mybatis-generator-core-1.3.5.jar -configfile generatorConfig.xml -overwrite

如果执行完提示:MyBatis Generator finished successfully. 则在该目录下的 target 下相应目录就可以看到生成的文件了。

二、Java 程序

1、配置文件

创建 Java 项目,将上述generatorConfig.xml 复制到项目目录,修改 3 个 targetProject 为:src\target\java src\target\resources src\target\java

2、启动程序代码

新建 GeneratorSqlmap.java 文件,内容如下:

public class GeneratorSqlmap {

    public static void main(String[] args) throws Exception {
        try {
            GeneratorSqlmap generatorSqlmap = new GeneratorSqlmap();
            generatorSqlmap.generator();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    public void generator() throws Exception {

        List<String> warnings = new ArrayList<String>();
        boolean overwrite = true;
        File configFile = new File("src\\generatorConfig.xml");
        ConfigurationParser cp = new ConfigurationParser(warnings);
        Configuration config = cp.parseConfiguration(configFile);
        DefaultShellCallback callback = new DefaultShellCallback(overwrite);
        MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config,
                callback, warnings);
        myBatisGenerator.generate(null);

    }

}

说明:上述代码只需要根据 generatorConfig.xml 的实际路径修改其引用路径即可

3、Jar 包依赖

将下载好的mybatis-generator-core-1.3.5.jar加入项目依赖(可参见:IDEA Java 项目添加本地 Jar 包

4、生成文件目录

新建 target 目录,其下新建 java 和 resources 包。最终项目目录结构见下图:

mybatis-generator代码生成工具自动生成Model、Dao、Mapper代码-打不死的小强

说明:相关目录根据实际情况修改调整。

5、执行 main 方法

执行 GeneratorSqlmap 中的 main 方法即可生成代码文件

mybatis-generator代码生成工具自动生成Model、Dao、Mapper代码-打不死的小强

三、Maven 程序

pom.xml 加入 mybatis-generator-maven-plugin,如下:

<plugin>
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-maven-plugin</artifactId>
    <version>1.3.7</version>
    <configuration>
        <configurationFile>
            ${basedir}/src/main/resources/generator/generatorConfig.xml
        </configurationFile>
        <overwrite>true</overwrite>
        <verbose>true</verbose>
    </configuration>
</plugin>

当然数据库驱动依赖是必须的,这里不再列出。

将 generatorConfig.xml 放在指定目录下,按实际情况修改 targetProject 生成路径。

刷新 maven,再执行:

mvn mybatis-generator:generate 

或者,IDEA 下直接点击执行:

mybatis-generator代码生成工具自动生成Model、Dao、Mapper代码-打不死的小强

即可

附一份配置详解:Mybatis Generator 最完整配置详解



发表评论

电子邮件地址不会被公开。 必填项已用*标注