1.按照 MBG 的要求添加 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">
2.需要写上 XML 文件的根节点generatorConfiguration
<generatorConfiguration>
</generatorConfiguration>
properties 标签
这个标签用来指定外部的属性元素,最多可以配置 个,也可以不配置。
properties 标签用于指定一个需要在配置中解析使用的外部属性文件 引入属性文件后,可以在配置中使用${ property }这种形式的引用,通过这种方式引用属性文件中的属性值,对于后面需要配置的 JDB 信息会很有用 。
classPathEntry 标签
这个标签可 以配置多个, 也可以不配置。
context 标签
该标签至少配置 个,可以配置多个。
property 标签
plugin 标签
plugi 口标签用来定义一个插件,用于扩展或修改通过 MBG 生成的代码 。
commentGenerator 标签
该标签用来配置如何生成注释信息,最多可以配置1个。
如果对上面的注释不满意或者想实现自己的注释形式,可以实现 CommentGenerator,参考 MBG 中的 DefaultCommentGenerator 即可。这里提供 个简单例子供参考,假设实现类为 tk.mybatis generator MyCommentGenerator ,代码如下。
package tk.mybatis.generator;
import static org.mybatis.generator.internal.util.StringUtility.isTrue;
import java.util.Properties;
import org.mybatis.generator.api.IntrospectedColumn;
import org.mybatis.generator.api.IntrospectedTable;
import org.mybatis.generator.api.dom.java.Field;
import org.mybatis.generator.config.PropertyRegistry;
import org.mybatis.generator.internal.DefaultCommentGenerator;
import org.mybatis.generator.internal.util.StringUtility;
/**
* 自己实现的注释生成器
*/
public class MyCommentGenerator extends DefaultCommentGenerator {
/**
* 由于默认实现类中的可配参数都没有提供给子类可以访问的方法,这里要定义一遍
*/
private boolean suppressAllComments;
/**
* 同上
*/
private boolean addRemarkComments;
/**
* 设置用户配置的参数
*/
public void addConfigurationProperties(Properties properties) {
//先调用父类方法保证父类方法可以正常使用
super.addConfigurationProperties(properties);
//获取 suppressAllComments 参数值
suppressAllComments = isTrue(properties
.getProperty(PropertyRegistry.COMMENT_GENERATOR_SUPPRESS_ALL_COMMENTS));
//获取 addRemarkComments 参数值
addRemarkComments = isTrue(properties
.getProperty(PropertyRegistry.COMMENT_GENERATOR_ADD_REMARK_COMMENTS));
}
/**
* 给字段添加注释信息
*/
public void addFieldComment(Field field,
IntrospectedTable introspectedTable,
IntrospectedColumn introspectedColumn) {
//如果阻止生成所有注释,直接返回
if (suppressAllComments) {
return;
}
//文档注释开始
field.addJavaDocLine("/**");
//获取数据库字段的备注信息
String remarks = introspectedColumn.getRemarks();
//根据参数和备注信息判断是否添加备注信息
if (addRemarkComments && StringUtility.stringHasValue(remarks)) {
String[] remarkLines = remarks.split(System.getProperty("line.separator"));
for (String remarkLine : remarkLines) {
field.addJavaDocLine(" * " + remarkLine);
}
}
//由于 Java 对象名和数据库字段名可能不一样,注释中保留数据库字段名
field.addJavaDocLine(" * " + introspectedColumn.getActualColumnName());
field.addJavaDocLine(" */");
}
}
jdbcConnection 标签
<!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://172.16.28.256:3306/taca"
userId="root"
password="">
</jdbcConnection>
javaTypeResolver 标签
该标签的配置用来指定 JDBC 类型和 Java 类型如何转换,最多可以配置一个。
javaModelGenerator 标签
sqlMapGenerator 标签
javaClientGenerator 标签
table 标签
配置示例:
<?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>
<context id="testTables" targetRuntime="MyBatis3">
<commentGenerator>
<!-- 是否去除自动生成的注释 true:是 : false:否 -->
<property name="suppressAllComments" value="true" />
</commentGenerator>
<!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://172.16.8.26:3306/tacs"
userId=""
password="">
</jdbcConnection>
<!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和
NUMERIC 类型解析为java.math.BigDecimal -->
<javaTypeResolver>
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!-- targetProject:生成PO类的位置 -->
<javaModelGenerator targetPackage="com.ccs.nsg.busi.entity.vo.aaa"
targetProject=".\src">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
<!-- 从数据库返回的值被清理前后的空格 -->
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- targetProject:mapper映射文件生成的位置 -->
<sqlMapGenerator targetPackage="com.ccs.nsg.busi.dm.aaa"
targetProject=".\src">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
</sqlMapGenerator>
<!-- targetPackage:mapper接口生成的位置 -->
<javaClientGenerator type="XMLMAPPER"
targetPackage="com.ccs.nsg.busi.dm.aaa"
targetProject=".\src">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
</javaClientGenerator>
<!-- 指定数据库表 -->
<table schema="" tableName="privgrp"></table>
<!-- <table schema="" tableName="accounting2"></table> -->
<!-- <table schema="" tableName="tb_content_category"></table>
<table schema="" tableName="tb_item"></table>
<table schema="" tableName="tb_item_cat"></table>
<table schema="" tableName="tb_item_desc"></table>
<table schema="" tableName="tb_item_param"></table>
<table schema="" tableName="tb_item_param_item"></table>
<table schema="" tableName="tb_order"></table>
<table schema="" tableName="tb_order_item"></table>
<table schema="" tableName="tb_order_shipping"></table>
<table schema="" tableName="tb_user"></table>
-->
</context>
</generatorConfiguration>
Example 介绍