我在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类的整个对象?
答案 0 :(得分:5)
您不需要传递整个Category类。就像你描述的那样去做:
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
,您需要指定地图。
现在假设你要传递两个参数:
int getCatCount(int catTypeId, int mySecondParam);
在映射器中,您应该使用param1
和param2
请参阅,如何使用“paramX”命名法。但是,假设使用该命名法,您希望使用自定义参数名称作为“catTypeId”。为此,您需要在Java代码中执行此操作:
int getCatCount( @Param("cat_type_id ") String cat_type_id);
XML mapper将是我所说的,但使用cat_type_id
代替param1
。