最近码代码的时候发现如果参数是数组类型的,且数组中元素只有一个,下图SQL是会报错的。
Cause: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '16' at line 4
但是如果参数类型是个集合的话,集合中元素只有一个是不会报sql异常的
如果想要数组作为参数去做动态批量删除sql的话可以使用下面的方式来实现。
<choose>标签是按顺序判断其内部when标签中的test条件出否成立,如果array.length == 1的话就执行第一条sql,反之执行第二条sql
<delete id="deleteRoleByIds" parameterType="java.lang.Long">
<choose>
<when test="array.length == 1">
delete from sys_role where role_id = #{array[0]}
</when>
<otherwise>
delete from sys_role where role_id in
<foreach collection="array" item="roleId" open="(" separator="," close=")">
#{roleId}
</foreach>
</otherwise>
</choose>
</delete>
以上为我个人的见解,有不对的地方还希望大佬指正!