0

如果我将“<commentGenerator>”放在“<jdbcConnection>”之后,MBG 会提出上下文内容应该匹配的错误:blablabla...但是当我将“<commentGenerator>”放在“<jdbcConnection>”之前时,一切正常。在这里我要向官网投诉,如果需要这些物品的订单,为什么不告诉我们!多么重要的事情!你在和新生开玩笑。可能是我不知道的地方,但这是成功构建MBG配置文件的关键点,为什么不把这个注释放在教程的顶部或醒目的地方呢?

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

1 回答 1

1

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

如果您正确指定了根元素,如下所示:

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

此根元素包含一个典型的DTD声明,位于http://mybatis.org/dtd/mybatis-generator-config_1_0.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+

在此元素中,所有子元素必须按以下规则出现:

  1. +用于指定该项目必须出现一次或多次——每次出现的有效内容可能不同;
  2. *用于指定允许出现任何数量(零个或多个)——该项目是可选的,并且每个出现的有效内容可能不同;
  3. ?用于指定不得超过一次出现 - 该项目是可选的;
  4. 如果没有量词,则指定项必须在元素内容中的指定位置恰好出现一次。

在我们了解了它的真正含义之后,为什么不能改变它的顺序,commentGenerator应该jdbcConnection清楚了。

也许您想知道如何使元素乱序,问题如何在没有严格元素顺序的情况下定义 DTD可能很有用。

希望对您有所帮助。

于 2016-05-07T15:24:11.657 回答