0

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

1 に答える 1

1

まず第一に、xml構成ファイルには有効なルート要素が含まれていません。これは常に<!DOCTYPE .../>. ジェネレーター構成ファイルの正しいルート要素を追加する方法については、 MyBatis GeneratorXML 構成ファイル リファレンスmybatisの例を参照してください。

次のようにルート要素を正しく指定した場合:

<!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. +アイテムの 1 つまたは複数の出現が必要であることを指定するため — 各出現の有効なコンテンツは異なる場合があります。
  2. *任意の数 (ゼロ以上) の出現が許可されることを指定するため — 項目はオプションであり、各出現の有効な内容は異なる場合があります。
  3. ?複数の出現があってはならないことを指定するため — 項目はオプションです。
  4. 量指定子がない場合、指定された項目は、要素のコンテンツ内の指定された位置に 1 回だけ出現する必要があります。

commentGeneratorその本当の意味を理解した後、との順序を変更できなかった理由jdbcConnectionが明らかになるはずです。

要素を順不同にする方法を知りたい場合は、要素の順序を厳密に指定せずに DTD を定義する方法が役立ちます。

お役に立てば幸いです。

于 2016-05-07T15:24:11.657 に答える