【MyBatis Generator】代码自动生成工具 generatorConfig.xml配置文件详解_weixin_42601042的博客-CSDN博客_generatorconfig.xml

MyBatis Generator官网地址:http://www.mybatis.org/generator/index.html

MyBaris Generator中文地址:http://mbg.cndocs.ml/

在MBG中,最主要也最重要的,就是generatorConfig.xml配置文件了,本篇主要就是详细介绍该配置文件内的内容。

【1.文件头】配置文件头:

<?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.根节点<generatorConfiguration>】<generatorConfiguration>为根节点,没有任何属性;如下:

<generatorConfiguration>    <!-- 配置具体内容 --></generatorConfiguration>

【3.<generatorConfiguration>子元素】<generatorConfiguration>主要有3个子元素,有严格的顺序;

1:<properties>(0个或多个)

2:<classPathEntry>(0个或多个)

3:<context>(1个或多个)

【3.1.<properties>元素】这个元素主要用来指定外部的属性元素,不是必须的元素。

<properties>元素用于指定一个需要在配置中解析使用的外部属性文件,引入属性文件后,可以再配置中使用${property}的方式进行属性引用,通过这种方式引用属性文件中的属性值。比如常规的配置“jdbc”信息的引用:${url}, ${username}等

这个元素有两个属性resurceurl,分别为两种引入方式,两个属性只能使用其中一个,同时出现会报错。

  • resource:指定**classpath**下的属性文件,使用类似com/myproject/generatorConfig.properties这样的属性值
  • url:可以指定文件系统上的特定位置,例如:file:///C:/myfloder/generatorConfig.properties
    <!-- 引入配置文件 -->    <properties resource="mybatis\config\init.properties" />

【3.2.<classPathEntry>元素】这个元素可以1个或多个,不受限制。

这个属性是引入需要依赖的jar路径,最常用的用法就是指定驱动程序的路径,例如:

    <!-- 数据库驱动jar路径 -->    <classPathEntry location="${driverClassPath}" />

注意:classPathEntry只有在下面这两种情况下才有效:

1:当加载JDBC驱动内省数据库时;

2:当加载根类中的javaModelGenerator检查重写的方法时;

【3.3.<context>元素】在MBG的配置中,至少需要一个<context>元素;

<context>元素用于指定一组对象的环境。在运行MBG的时候可以指定要运行的<context>

该元素只有一个“必选属性”id,用来唯一确定一个<context>元素,该id属性可以再运行MBG时使用。

此外还有几个“可选属性”:

  • defaultModelType:这个属性用来设置生成对象类型的默认值。 对象类型定义了MBG如何生成实体类。 对某些对象类型,MBG会给每一个表生成一个单独的实体类。 对另外一些对象类型,MBG会根据表结构生成不同的类。

这个属性有以下可选值:

1:conditional:这是默认值,这个模型和hierarchical类似,除了如果那个单独的类将只包含一个字段,将不会生成一个单独的类。 因此,如果一个表的主键只有一个字段,那么不会为该字段生成单独的实体类,会将该字段合并到基本实体类中。

2:flat:该模型为每一张表只生成一个实体类。这个实体类包含表中的所有字段。

3:hierarchical:如果表有主键,那么该模型会产生一个单独的主键实体类,如果表还有BLOB字段, 则会为表生成一个包含所有BLOB字段的单独的实体类,然后为所有其他的字段生成一个单独的实体类。 MBG会在所有生成的实体类之间维护一个继承关系(注:BLOB类 继承 其他字段类 继承 主键类)。

  • targetRuntime:此属性用于指定生成的代码的运行时目标。

该属性支持这些特殊的值:

1:MyBatis3:_这是默认值_ ,使用这值的时候,MBG会生成兼容MyBatis 3.0或更高版本, 兼容JSE 5.0或更高版本的对象(例如Java模型类和Mapper接口会使用泛型)。 这些生成对象中的"by example"方法将支持几乎不受限制的动态的where子句。 另外,这些生成器生成的Java对象支持JSE 5.0特性,包含泛型和注解。

2:MyBatis3Simple:使用这值的时候,和上面的MyBatis3类似,但是不会有"by example"一类的方法,只有少量的动态SQL。

3:Ibatis2Java2:使用这值的时候,MBG会生成兼容iBATIS 2.2.0或更高版本(除了iBATIS 3),还有Java2的所有层次。 这些生成对象中的"by example"方法将支持几乎不受限制的动态的where子句。 这些生成的对象不能100%和原生的Abator或其他的代码生成器兼容。

4:Ibatis2Java5:使用这值的时候,MBG会生成兼容iBATIS 2.2.0或更高版本(除了iBATIS 3), 兼容JSE 5.0或更高版本的对象(例如Java模型类和Dao类会使用泛型)。 这些生成对象中的"by example"方法将支持几乎不受限制的动态的where子句。 另外,这些生成器生成的Java对象支持JSE 5.0特性,包含泛型和注解。 这些生成的对象不能100%和原生的Abator或其他的代码生成器兼容。

如果您想创建一个完全不同的代码生成器, 使用一个继承了org.mybatis.generator.api.IntrospectedTable类的权限定类名替换该值。 通过这个值,您可以创建您自己的代码生成器,然后插入到代码生成器引擎中。

  • introspectedColumnImpl:使用这个值去指定一个继承了org.mybatis.generator.api.IntrospectedColumn类的权限定名称。 这可以修改代码生成器计算列信息时候的行为。

一般情况下,我们使用如下的配置即可:

<context id="mySql" defaultModelType="flat">

如果你希望不生成和Example查询有关的内容,那么可以按照如下进行配置:

<context id="mySql" defaultModelType="flat" targetRuntime="MyBatis3Simple">

MBG配置中的其他几个元素,基本上都是<context>的子元素,这些子元素(有严格的配置顺序)包括: