前言
简单研究了一下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())));
}
}