com.highgo.jdbc.util.PSQLException: 错误: 操作符不是唯一的: integer = character varying(mybatis postgreSql)
postgresql抛出的异常,是因为数据库类型是int类型,而java传参String造成。有2种解决方案,建议第二种方案更方便简洁

解决方案一:
代码
public int deleteSysUserSignByIds(String ids) {
return sysUserSignMapper.deleteSysUserSignByIds(Convert.toStrArray(ids));
}XML:
<delete id="deleteSysUserSignByIds" parameterType="String">
delete from sys_user_sign where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>而数据库的id类型是int类型
修改方案:
public int deleteSysUserSignByIds(String ids) {
return sysUserSignMapper.deleteSysUserSignByIds(Convert.toLongArray(ids));
}将传入的string数组转换为integer数组或者long数据即可。
当然对应接口方法的接收参数类型也要做相应改变。
解决方案二:(只需修改下xml文件)
解决方案是在xml内将string类型的参数变量 强转为int类型,在变量后加::int
<delete id="deleteGoodsRecordByIds" parameterType="String">
delete from goods_record where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}::int
</foreach>
</delete>本文原创,转载必追究版权。