第5章 Mybatis 代码生成器

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 介绍

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值