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

之前我写过一篇Blog说明了使用MyBatisGenerator工具,从配置文件generatorConfig.xml读取配置并生成可供MyBatis使用的对象和mapper文件。

Blog地址位于:http://my.oschina.net/Tsybius2014/blog/676973

今天我尝试了另一种方法生成对象和Mapper文件,即通过代码手工建立一个Configuration对象,并使用这个Configuration对象作为MyBatisGenerator的生成配置。

工程的结构和上篇Blog一致,我们只需要将main函数修改一下:

package GenMyBatisTest;

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.CommentGeneratorConfiguration;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.Context;
import org.mybatis.generator.config.JDBCConnectionConfiguration;
import org.mybatis.generator.config.JavaClientGeneratorConfiguration;
import org.mybatis.generator.config.JavaModelGeneratorConfiguration;
import org.mybatis.generator.config.JavaTypeResolverConfiguration;
import org.mybatis.generator.config.ModelType;
import org.mybatis.generator.config.SqlMapGeneratorConfiguration;
import org.mybatis.generator.config.TableConfiguration;
import org.mybatis.generator.internal.DefaultShellCallback;

/**
 * MyBatisGenerator 学习
 * @author Tsybius2014
 * @date 2016年5月20日
 * @time 下午11:50:31
 * @remark
 */
public class GenMyBatis {
    public static void main(String[] args) {
        try {
            //数据库属性
            String classPath = "E:/jars/mybatis-3.2.2/lib/ojdbc14-10.2.0.2.0.jar";
            String jdbcDriver = "oracle.jdbc.driver.OracleDriver";
            String jdbcUrl = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";
            String jdbcUser = "用户名";
            String jdbcPassword = "密码";
            List<String> warnings = new ArrayList<String>();
            boolean overwrite = true;
            //MyBatisGenerator需读取的配置类
            Configuration config = new Configuration();
            config.addClasspathEntry(classPath);
            Context context = new Context(ModelType.CONDITIONAL);
            context.setId("oracleGenTest");
            context.setTargetRuntime("MyBatis3");
            //commentGenerator
            CommentGeneratorConfiguration comment = new CommentGeneratorConfiguration();
            comment.addProperty("suppressDate", "true");
            comment.addProperty("suppressAllComments", "true");
            context.setCommentGeneratorConfiguration(comment);
            //jdbcConnection
            JDBCConnectionConfiguration jdbcCon = new JDBCConnectionConfiguration();
            jdbcCon.setDriverClass(jdbcDriver);
            jdbcCon.setConnectionURL(jdbcUrl);
            jdbcCon.setUserId(jdbcUser);
            jdbcCon.setPassword(jdbcPassword);
            context.setJdbcConnectionConfiguration(jdbcCon);
            //javaTypeResolver
            JavaTypeResolverConfiguration javaTypeResolver = 
                new JavaTypeResolverConfiguration();
            javaTypeResolver.addProperty("forceBigDecimals", "false");
            context.setJavaTypeResolverConfiguration(javaTypeResolver);
            // javaModelGenerator 生成对象和Example类相关配置
            JavaModelGeneratorConfiguration javaModel = 
                new JavaModelGeneratorConfiguration();
            javaModel.setTargetPackage("GenTarget.object_example_java");
            javaModel.setTargetProject("src");
            javaModel.addProperty("enableSubPackages", "true");
            javaModel.addProperty("trimStrings", "true");
            context.setJavaModelGeneratorConfiguration(javaModel);
            // sqlMapGenerator 生成mapper.xml相关配置 
            SqlMapGeneratorConfiguration sqlMap = new SqlMapGeneratorConfiguration();
            sqlMap.setTargetPackage("GenTarget.mapper_xml");
            sqlMap.setTargetProject("src");
            sqlMap.addProperty("enableSubPackages", "false");
            context.setSqlMapGeneratorConfiguration(sqlMap);
            // javaClientGenerator 生成mapper.java相关配置
            JavaClientGeneratorConfiguration javaClient = 
                new JavaClientGeneratorConfiguration();
            javaClient.setTargetPackage("GenTarget.mapper_java");
            javaClient.setTargetProject("src");
            javaClient.setConfigurationType("XMLMAPPER");
            javaClient.addProperty("enableSubPackages", "false");
            context.setJavaClientGeneratorConfiguration(javaClient);
            // table
            TableConfiguration table = new TableConfiguration(context);
            table.setTableName("game_record");
            context.addTableConfiguration(table);
            config.addContext(context);
            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());
        }
    }
}

这段代码中配置与此properties和xml文件相同:

1、文件database.properties

#Mybatis Generator configuration  
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=登录密码

2、文件 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 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>

生成结果如下:

总结一下:

context作为上下文,每块大配置都是通过形如setXXX的函数赋入的配置类完成的。这些配置类的修改方法有两类,一类是addProperty增加键值对,另一类是setXXX函数完成赋值。

END

转载于:https://my.oschina.net/Tsybius2014/blog/678840

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值