天天看点

MyBatis代码生成器XML配置详解

MyBatis代码生成器——MyBatis Generator,缩写为MBG

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">
           

文件头中的mybatis-generator-config_1_0.dtd用于定义该配置文件中的所有标签和属性的用法及限制,在文件头之后,需要写文件的根节点generatorConfiguration。

<generatorConfiguration>

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

</generatorConfiguration>
           

下面介绍generatorConfiguration标签下的3个子标签,分别是properties、classPathEntry和context。在配置这3个标签的时候,必须注意他们的顺序,必须和列举的顺序一致。

        1.properties标签

        用来指定外部的属性元素,最多可以配置1个,也可以不配置。properties也可用来指定一个需要在配置中解析使用的外部属性文件,引入属性文件后,可以在配置中使用${property}这种形式引用,通过这种方式引用属性文件中的属性值,对于配置JDBC信息会很有用。

        properties标签包含resource和url两个属性,但是只能使用其中一个属性来指定,同时使用则会报错。

        (1)resource:指定classpath下的属性文件,例如:com/test/database.properties这样的属性值。

        (2)url:指定文件系统上的特定位置,例如:file:///D:/com/test/database.properties。

        2.classPathEntry标签

        这个标签可以配置多个,也可以不配置。最常见的用法就是通过属性location指定驱动的路径,例如:

<classPathEntry location="D:\lib\mysql-connector-java-5.1.7-bin.jar"/>
           

        3.context标签

        该标签至少配置1个,也可以配置多个。context标签用于指定生成一组对象的环境。例如要指定连接的数据库,要生成对象的类型和要处理的数据库中的表。运行MBG的时候还可以指定要运行的context。

        context标签只有一个必选属性id,用来唯一确定该标签,该id属性可以在运行MBG时使用。此外还有几个属性可选。

        (1)defaultModelType:这个属性很重要,定义了MBG如何生成实体类。该属性有以下可选值。

              1)conditional:默认值,和下面的hierarchical类似,如果一个表的主键只有一个字段,那么不会为该字段生成单独的实体类,而是会将该字段合并到基本实体类中。

              2)flat:该模型只为每张表生成一个实体类。这个实体类包含表中的所有字段,这种模型最简单,推荐使用。

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

        (2)targetRuntime:此属性用于指定生成的代码的运行时环境,有以下可选值。

                1)MyBatis3:默认值。

                2)MyBatis3Simple:这种情况不会生成与Example相关的方法。

        (3)introspectedColumnImpl:该参数可以指定扩展org.mybatis.generator.api.Introspected Column类的实现类。一般情况下,使用如下配置即可。

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

        如果不希望生成和Example查询有关的内容,则可以按照如下配置

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

        MBG配置中的其他几个标签基本上都是context的子标签,这些子标签(有严格的配置顺序,后面的括号中的内容为这些标签可以配置的个数)包括以下几个。

        ●    property(0个或多个)      
        ●    plugin(0个或多个)      
        ●    commentGenerator(0个或1个)      
        ●    jdbcConnection(1个)      
        ●    javaTypeResolver(0个或1个)      
        ●    javaModelGenerator(1个)      
        ●    sqlMapGenerator(0个或1个)      
        ●    javaClientGenerator(0个或1个)      
        ●    table(1个或多个)      
        文章到此结束,希望对大家有所帮助!