我将如何传递参数,并检查它在MyBatis的动态查询创作(How would I pass para

2019-09-23 04:11发布

我写我的内选择查询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);

我如何检查catTypeId在if条件。 我知道上面的说法是不正确,但我想提出这样的条件,所以我检查,如果不catTypeId零,则只会增加和状况。 或者我需要通过类别类的整对象?

Answer 1:

你并不需要通过整个类别类。 只要做到这一点,你描述的:

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_id代替param1



文章来源: How would I pass parameter and check it in mybatis dynamic query creation