0

mybatisに動的選択クエリがあります。次のようなものです。

<select id="genericSelect" parameterType="GenericQueryParameter" resultType="hashmap">
  SELECT <if test="selectMode != null">${selectMode}</if> ${selectPart}
  FROM ${fromPart}
  <where>
    <if test="fixedWherePart != null">${fixedWherePart}</if>
    <if test="wherePart != null">AND ${wherePart}</if>
    <if test="initialCondition != null and wherePart == null">AND ${initialCondition}</if>
  </where>
  <if test="groupByPart != null"> GROUP BY ${groupByPart}</if>
  <if test="havingPart != null"> HAVING ${havingPart}</if>
  <if test="order != null"> ORDER BY ${order}</if>
</select>

結果としてキーをハッシュマップし、列名ではなく列番号を入力することが重要です。どういうわけか、これを行うためにいくつかのカスタムハンドラーまたは他のものを作成することは可能ですか?

Mybatisのバージョンは3.1.1で、マッパーインターフェイスを使用してクエリを処理しています。

4

1 に答える 1

0

これは私が望んでいた方法では不可能なので、クエリを少し変更しました。まず、配列selectPartに変更しました。ここで、クエリの選択部分を次のように変更しました。

<foreach collection="selectArray" item="selectElement" index="index" separator=", ">
  ${selectElement} COL${index+1}
</foreach>

今、エイリアスとindex変数を使用して要素をハッシュマップに配置し、クエリの選択部分に順序の情報を保持しています。

于 2013-01-09T17:03:00.890 に答える