遇到一个需求,前端传几个orderType(int)类型参数过来,然后将这几个参数放在一个orderTypes数组里面,最后去数据库里面将数据取出来。
1、刚开始想的时候,设置一个Integer[] orderTypes 接受前端传过来的值,经过controller、service、imp后面将这个数组传到mapper.xml内处理
<if test="orderTypes != null">
<![CDATA[ AND `ORDER_TYPE` IN #{orderTypes} ]]>
</if>
前端传数据时直接出错。
2、将Integer[] orderTypes换成List<Integer> orderTypes
错误依旧没有改变
3、后面意识到是sql语句的问题
<if test="orderTypes != null">
<![CDATA[ AND `ORDER_TYPE` IN #{orderTypes,jdbcType=ARRAY} ]]>
</if>
自信满满将jdbcType类型改为数组,后面依旧报错
4、最最后修改成功,将存放数据的orderTypes放在集合collection里面,进行数据查询
<if test="orderTypes != null">
AND `ORDER_TYPE` in
<foreach item="item" collection="orderTypes" separator="," open="(" close=")"
index="">
#{item}
</foreach>
</if>