欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MyBatis代码生成器XML配置详解

程序员文章站 2022-04-22 08:25:31
...

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个或多个)
        文章到此结束,希望对大家有所帮助!