场景

前端传递一个部门id的数组作为查询条件查询部门id在这个数组中的数据。

在MyBatis的xml中获取到了这个数组参数后怎样进行if-test的判空与长度判断。

注:

博客:
https://blog.csdn.net/badao_liumang_qizhi
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。

实现

在mapper接口层传递数组参数

 public List<KqDksz> selectKqDkszListBySx(@Param("array") int[] bmids, String xm, String dkzt);

然后在对应的xml中

    <select id="selectKqDkszListBySx"  resultMap="KqDkszResult">
        <include refid="selectKqDkszVoJoinJibenXinXi"/>
        <where>
            <if test="array != null and array.length >0"> and j.bmid in
                <foreach collection="array" item="item" open="(" separator="," close=")">
                    ${item}
                </foreach>
             </if>
        </where>
    </select>

这里就可以通过array获取传递的数组并遍历。

这里的数组参数不是必传的,所以需要加if-test的判断

<if test="array != null and array.length >0">

首先判断其不为空,并且判断其长度大于0。因为有可能传递空数组的情况。

因为这里是传递的数组对象,所以这里是使用的array.length属性

注意length不是方法

但是如果传递的参数时list的话,就要使用如下方式

<if test="list != null and list.size() > 0">
posted on 2020-07-30 10:48  霸道流氓  阅读(12847)  评论(2编辑  收藏  举报