Mybatis Generator的错误:应该订购配置项?

时间:2016-05-04 06:03:19

标签: mybatis mybatis-generator

如果我放"< commentGenerator>"在"< jdbcConnection>"之后,MBG提出了一个错误,即上下文内容应该匹配:blablabla ... 但是当我把"< commentGenerator>"在"< jdbcConnection>"之前,一切正常。在这里,我有话要向官方网站投诉,如果需要这些物品的订单,为什么你不告诉我们!真是太重要了!你开玩笑吧。也许这是我不知道的地方,但这是成功构建MBG配置文件的关键点,为什么不把这个NOTE放在教程的顶部或引人注目?

    <generatorConfiguration > 
  <classPathEntry location="D:\mariadb-java-client-1.1.7.jar" />
  <context id="db" >
    <commentGenerator> 
        <property name="suppressAllComments" value="true" />
        <property name="suppressDate" value="true" />
    </commentGenerator> 
    <jdbcConnection driverClass="org.mariadb.jdbc.Driver" 
                    connectionURL="jdbc:mariadb://localhost:3306/dbname" 
                    userId="root" 
                    password="password" 
    />
    <javaTypeResolver >
      <property name="forceBigDecimals" value="false" />
    </javaTypeResolver> 
    <!-- Model Class -->
    <javaModelGenerator targetPackage="org.infrastructure.model" targetProject="infrastructure\src\main\java">
      <property name="enableSubPackages" value="false" />
      <property name="trimStrings" value="true" />
    </javaModelGenerator>

    <!-- XML Files -->
    <sqlMapGenerator targetPackage="sqlMap"  targetProject="infrastructure\src\main\config">
      <property name="enableSubPackages" value="false" />
    </sqlMapGenerator>

    <!-- DAO -->
    <javaClientGenerator type="XMLMAPPER" targetPackage="org.infrastructure.dao"  targetProject="infrastructure\src\main\java">
      <property name="enableSubPackages" value="false" />
    </javaClientGenerator> 

    <!-- Tables -->
    <table tableName="user" domainObjectName="User" ></table>  
  </context>
</generatorConfiguration>

1 个答案:

答案 0 :(得分:1)

首先,在您的xml配置文件中,它不包含有效的根元素,它始终应该像<!DOCTYPE .../>。关于如何添加mybatis生成器配置文件的正确根元素,请参阅MyBatis GeneratorXML Configuration File Reference中的示例。

如果您正确指定了根元素,例如以下内容:

<!DOCTYPE generatorConfiguration PUBLIC 
  "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
  "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"
>

此根元素包含位于http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd的典型DTD声明。这是这些项目的顺序需要的定义。我们将会看到它的样子。

从该文档类型定义的第47行开始,它定义了名为context的元素。内容如下:

<!--
  The context element is used to describe a context for generating files, and the source tables.
-->
<!ELEMENT context (property*, plugin*, commentGenerator?, jdbcConnection, javaTypeResolver?,javaModelGenerator, sqlMapGenerator?, javaClientGenerator?, table+)>

这显然定义了context中元素的顺序,即:

property*, plugin*, commentGenerator?, jdbcConnection, 
javaTypeResolver?,javaModelGenerator, sqlMapGenerator?,
javaClientGenerator?, table+

在此元素中,所有子项必须以following rules

的形式出现
  1. +用于指定项目必须出现一次或多次 - 每次出现的有效内容可能不同;
  2. *用于指定允许任何数量(零个或多个)出现 - 该项目是可选的,每个事件的有效内容可能不同;
  3. ?用于指定一定不能出现多次 - 该项是可选的;
  4. 如果没有量词,则指定的项目必须恰好在元素内容的指定位置出现一次。
  5. 在我们理解其真实含义后,为什么您无法更改commentGeneratorjdbcConnection的顺序应该是明确的。

    也许您想知道如何使元素无序,问题How to define DTD without strict element order可能会有用。

    希望它有所帮助。