使用 MyBatis Generator 工具生成MyBatis相关类和Mapper文件

ぃ、小莉子 提交于 2019-12-02 19:21:09

一、准备工作

使用Eclipse建立一个Java项目,结构如下:

其中,GenMyBatis.java用于存放项目的main函数。GenTarget目录下有三个子目录mapper_java、mapper_xml、object_example_java。还有两个配置文件database.properties。

另外,项目还需要引用一个jar包:E:\jars\mybatis-generator-core-1.3.2.jar。这个包可以从这个地址获取:https://github.com/mybatis/generator/releases

二、建立database.properties和generatorConfig.xml

database.properties用于一些数据库连接相关的配置。因为这部分配置变化的可能性较大,因此单独放到一个文件中:

classPath=E:/jars/mybatis-3.2.2/lib/ojdbc14-10.2.0.2.0.jar
jdbc_driver=oracle.jdbc.driver.OracleDriver
jdbc_url=jdbc:oracle:thin:@127.0.0.1:1521:orcl
jdbc_user=这里输入用户名  
jdbc_password=这里输入密码

generatorConfig.xml是MyBatisGenerator的配置文件,代码如下:

<?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 resource="database.properties"/>  
    <!-- ojdbc14-10.2.0.2.0.jar 路径 -->
    <classPathEntry location="${classPath}" />
    <context id="oracleGenTest" targetRuntime="MyBatis3" >
        <commentGenerator>
            <property name="suppressDate" value="true" />
            <property name="suppressAllComments" value="true" />
        </commentGenerator>
        <jdbcConnection 
            driverClass="${jdbc_driver}" connectionURL="${jdbc_url}" 
            userId="${jdbc_user}" password="${jdbc_password}" />
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false" />
        </javaTypeResolver>
        <!-- 生成对象和Example类相关配置 -->
        <javaModelGenerator targetPackage="GenTarget.object_example_java"
            targetProject="src">
            <property name="enableSubPackages" value="true" />
            <property name="trimStrings" value="true" />
        </javaModelGenerator>
        <!-- 生成mapper.xml相关配置 -->
        <sqlMapGenerator targetPackage="GenTarget.mapper_xml"
            targetProject="src">
            <property name="enableSubPackages" value="false" />
        </sqlMapGenerator>
        <!-- 生成mapper.java相关配置 -->
        <javaClientGenerator targetPackage="GenTarget.mapper_java"
            targetProject="src" type="XMLMAPPER">
            <property name="enableSubPackages" value="false" />  
        </javaClientGenerator>
        <!-- 数据表 -->
        <table tableName="game_record"></table>
    </context>
</generatorConfiguration>

完成上述配置后,就可以开始着手写java部分的代码了。其中context下table条目中的tableName可以指定要生成那些数据表的对象和mapper。使用通配符%可以代表所有的字符,如info_%代表所有以“info_”开头的表。

三、实现main函数并运行

在 GenMyBatis.java 中键入以下代码:

package GenMyBatisTest;

import java.io.File;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.List;

import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.internal.DefaultShellCallback;

/**
 * MyBatisGenerator 学习
 * @author Tsybius2014
 * @date 2016年5月17日
 * @time 下午11:58:21
 * @remark
 */
public class GenMyBatis {
    public static void main(String[] args) {
        try {
            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);
            System.out.println("done.");
        } catch (Exception ex) {
            StringWriter stringWriter = new StringWriter();
            PrintWriter printWriter = new PrintWriter(stringWriter);
            ex.printStackTrace(printWriter);
            System.out.println(stringWriter.toString());
        }
    }
}

运行完毕后,即可看到效果:

其中GameRecordMapper.java的图标有红底×号标记,这是因为我没有引用MyBatis相关的jar包,并不是代码生成的问题。

四、其他

MyBatis Generator 的在线帮助文档参见: http://www.mybatis.org/generator/index.html

END

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!