1

要件が変化しているため、Mybatis を使用して DAO のマッパー ファイルを時々更新する必要があります。そして、ここに私が得た問題があります: 私たちはすでに一連のマッパー xml ファイルを生成しており、さらに、マッパー ファイルに独自の特定の要素を定義しています。

<select id="selectTop20PlayerOfClassicCard" resultMap="CollectionRankingMap">
    SELECT playerid,count(cardid) from re_player_card where type in (0,1) GROUP
    BY playerid ORDER BY COUNT(*) DESC limit 20;
</select>

<select id="selectTop20PlayerOfSpecialCard" resultMap="CollectionRankingMap">
    SELECT playerid,count(cardid) from re_player_card where type=2 GROUP BY
    playerid ORDER BY COUNT(*) DESC limit 20;
</select>

<resultMap id="CollectionRankingMap" type="dymaic.RePlayerCardRanking">
    <!-- manually generated -->
    <result column="playerid" jdbcType="INTEGER" property="playerid" />
    <result column="count(cardid)" jdbcType="INTEGER" property="count" />
</resultMap>

<select id="getCardIdByPlayerId" parameterType="int" resultType="int">
    select
    re_player_card.cardid
    from re_player_card
    where playerid = #{playerid}
</select>

3 つの select ステートメントと resultmap は、独自に定義されています。ここで、マッパー ファイルを再生成しますが、これらのステートメント ブロックを上書きしたくありません。Mybatisで残りを変更しながら、それらをマッパーファイルに保持する必要があります。

Mybatis generator eclipse プラグインを使用しています。それで、それを作る方法はありますか?皆さんの助けに感謝します。

4

2 に答える 2

4

MyBatis Generator Tool は、生成されたファイルの部分的なコンテンツを更新できるとは思いません。

MyBatis Generator Maven プラグインを使用している場合は、pom.xml に次のプロパティを追加して、既存のファイルを上書きしないように指示し、別の名前でファイルを生成できます。

<mybatis.generator.overwrite>false</mybatis.generator.overwrite>

PS: 上記の仮定は間違っています。

MyBatis のドキュメントから:

MyBatis ジェネレーターは、反復開発環境でうまく動作するように設計されており、継続的なビルド環境で Ant タスクまたは Maven プラグインとして含めることができます。MBG を繰り返し実行する際に注意すべき重要事項は次のとおりです。

  1. MBG は、新しく生成された XML ファイルと同じ名前の既存のファイルがある場合、XML ファイルを自動的にマージします。MBG は、生成した XML ファイルに加えたカスタム変更を上書きしません。XML へのカスタム変更が失われることを恐れることなく、何度でも実行できます。

  2. MBG は、以前の実行で生成されたすべての XML 要素を置き換えます。MBG は Java ファイルをマージしません。既存のファイルを上書きするか、新しく生成されたファイルを別の一意の名前で保存できます。生成された Java ファイルに変更を加え、MBG を繰り返し実行する場合は、手動で変更をマージする必要があります。MBG を Eclipse プラグインとして実行すると、Java ファイルを自動的にマージできます。

于 2013-01-28T06:23:55.120 に答える