com.highgo.jdbc.util.PSQLException: 错误: 操作符不是唯一的: integer = character varying(mybatis postgreSql)

1543年前瀚高数据库1267

postgresql抛出的异常,是因为数据库类型是int类型,而java传参String造成。有2种解决方案,建议第二种方案更方便简洁

image.png

解决方案一:

代码

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>


相关文章

rownum 与order by 的执行顺序及按rownum 排序

rownum 与order by 的执行顺序及按rownum 排序

  如果select语句(非嵌套查询形式的)有order by子句,则order by子句一般都是最后一步执行的。但是如果order by子句里的字段被设置了主键约束或是被设置索引了,那么o...

postgresql错误:  操作符不存在: bigint = text(瀚高数据库)

postgresql错误: 操作符不存在: bigint = text(瀚高数据库)

字符串和数字判断是否相等时会报错解决方案:库里执行sql语句:create cast(text as bigint) with inout as implicit;...

Oracle常用sql语句

1.多行数据一行显示sql:(用sum函数或max函数,当lc为1时DQSYJRZC的值) sum函数只能查字段类型为number型的,若字段值是汉字则用max函数select nsrsbh , su...

postgresql如何修改表的自增序列值(瀚高数据库)

例如:我要修改sys_dict_data表的dict_code自增值。在 pgsql 中,id 自增是通过序列 SEQUENCE。一般表的自增序列名称由数据表名+主键字段+seq组成。ALTER SE...

mysql 计算日期间隔天数

1、利用TO_DAYS函数select to_days(now()) - to_days('20120512')  2、利用DATED...

Oracle sql优化

 一、问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用系统提交实际应用后,随着数据库中数据...

评论列表

新闻头条
2021-05-12 20:17:01

文章不错支持一下

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。