3

内部に選択クエリを記述しましたmapper.xml

<select id="getCatCount" parameterType="String" resultType="int">
    select count(*) from Categories where status is not null  
    <if test="catTypeId != 0">
    AND cat_type_id = #{catTypeId,jdbcType=INTEGER}
    </if>  
</select>

そしてmapper.javaメソッドでは

int getCatCount(int catTypeId);

if 条件で catTypeId を確認するにはどうすればよいですか。上記のステートメントが正しくないことはわかっていますが、このような条件を設定したいので、catTypeId がゼロでないかどうかを確認し、AND 条件のみを追加します。または、Category クラスのオブジェクト全体を渡す必要がありますか?

4

1 に答える 1

7

カテゴリクラス全体を渡す必要はありません。あなたが説明したようにそれをしてください:

int getCatCount(int catTypeId);

mapper.xmlは次のようになります。

<select id="getCatCount" parameterClass="map" resultType="int">
  select count(*) from Categories where status is not null  
   <if test="param1 != 0">
     AND cat_type_id = #{param1,jdbcType=INTEGER}
   </if>  
</select>

parameterClassマップを指定する必要があることに注意してください。

ここで、2つのパラメーターを渡したいとしましょう。

int getCatCount(int catTypeId, int mySecondParam);

マッパーではparam1param2

「paramX」の命名法をどのように使用する必要があるかを参照してください。ただし、その命名法を使用する代わりに、カスタマイズされたパラメーター名を「catTypeId」として使用するとします。そのためには、Javaコードでこれを行う必要があります。

int getCatCount( @Param("cat_type_id ") String cat_type_id);

XMLマッパーは私がそれについて述べたものですが、cat_type_id代わりにを使用していますparam1

于 2012-09-30T16:51:50.830 に答える