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

您不需要通过整个 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);

在映射器中,您应该使用param1param2

看,你需要如何使用“paramX”命名法。但是,假设您希望使用自定义参数名称作为“catTypeId”,而不是使用该命名法。为此,您需要在 Java 代码中执行以下操作:

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

XML 映射器将是我所说的那个,但使用的cat_type_idparam1.

于 2012-09-30T16:51:50.830 回答