Mybatis generator配置文件简单理解

前言

简单研究了一下mybatis反向生成的配置,记录一下

1.generator配置文件,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>
    <!--读取db配置文件-->
    <properties resource="generator/generator.properties"/>

    <!--flat一张表生成一个实体类-->
    <context id="MySqlContext" targetRuntime="MyBatis3" defaultModelType="flat">

        <!--执行sql时表名加上``,防止有关键字报错-->
        <property name="beginningDelimiter" value="`"/>
        <property name="endingDelimiter" value="`"/>
        <property name="javaFileEncoding" value="UTF-8"/>

        <!--在生成实体类时直接实现序列化-->
        <plugin type="org.mybatis.generator.plugins.SerializablePlugin"/>
        <!--在生成实体类时生成toString()-->
        <plugin type="org.mybatis.generator.plugins.ToStringPlugin"/>
        <!--生成mapper.xml时覆盖原文件-->
        <plugin type="org.mybatis.generator.plugins.UnmergeableXmlMappersPlugin" />

        <commentGenerator>
            <!--不生成默认注释-->
            <property name="suppressAllComments" value="true"/>
            <!--不包含时间戳-->
            <property name="suppressDate" value="true"/>
            <!--生成数据库表字段注释-->
            <property name="addRemarkComments" value="true"/>
        </commentGenerator>

        <!--数据库配置连接-->
        <jdbcConnection driverClass="${jdbc.driverClass}"
            connectionURL="${jdbc.connectionURL}"
            userId="${jdbc.userId}"
            password="${jdbc.password}">
            <!--禁止mysql信息表生成实体类-->
            <property name="nullCatalogMeansCurrent" value="true" />
        </jdbcConnection>

        <!--配置想要将数据表中字段类型自定义转换成对应类型-->
        <!--配置中就是将tinyint转换成Integer-->
        <javaTypeResolver  type="com.example.demo.base.db.CustomizeJavaTypeResolverDefaultImpl">
            <!--当useJSR310Types为true时,就会jdbc对应的日期类型会转成java8中的LocateDateTime类型,
            如果useJSR310Types为false,则还是转成java.util.Date类型-->
            <property name="useJSR310Types" value="true"/>
        </javaTypeResolver>

        <!--targetPackage生成实体类存放的包名,targetProject指定目标项目路径-->
        <javaModelGenerator targetPackage="com.example.demo.base.entity" targetProject="src/main/java"/>

        <!--targetPackage生成mapper.xml存放的包名,targetProject指定目标项目路径-->
        <sqlMapGenerator targetPackage="db" targetProject="src/main/resources"/>

        <!--targetPackage生成mapper存放的包名,targetProject指定目标项目路径-->
        <!--XMLMAPPER所有的方法都在XML中,接口调用依赖XML文件-->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.example.demo.base.mapper"
            targetProject="src/main/java"/>

        <!--table用来配置要通过内省的表。只有配置的才会生成实体类和其他文件-->
        <!--%生成全部的表-->
        <table tableName="%">
            <!--在新增数据时id插入到insert后面-->
            <!--<generatedKey column="id" sqlStatement="MySql" identity="true"/>-->
        </table>
    </context>
</generatorConfiguration>

2.Generator启动类

代码如下(示例):

public class Generator {
	public static void main(String[] args) throws Exception {
		List<String> warnings = new ArrayList<String>();
		boolean overwrite = true;
		InputStream is = Generator.class.getResourceAsStream("/generator/generatorConfig.xml");
		ConfigurationParser cp = new ConfigurationParser(warnings);
		Configuration config = cp.parseConfiguration(is);
		is.close();

		DefaultShellCallback callback = new DefaultShellCallback(overwrite);
		MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
		myBatisGenerator.generate(null);
	}
}

3.javaTypeResolver自定义类型转换类

代码如下(示例):

public class CustomizeJavaTypeResolverDefaultImpl extends JavaTypeResolverDefaultImpl {

    public CustomizeJavaTypeResolverDefaultImpl() {
        super();
        super.typeMap.put(Types.TINYINT, new JdbcTypeInformation("TINYINT", new FullyQualifiedJavaType(Integer.class.getName())));
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值