mybatis 记录

在项目中遇到数据库查询异常,错误信息显示尝试比较Date与String类型导致失败。问题源于MyBatis的SQL条件判断,只需检查时间是否为null而非空字符串。修正后的解决方案是仅判断时间是否不为空。另外,介绍了在MyBatis中使用<![CDATA[]]>包裹SQL以避免XML转义的问题,确保特殊字符的正确解析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1,项目中遇到包含时间的查询抛异常

### Error querying database.  Cause: java.lang.IllegalArgumentException: invalid comparison: java.util.Date and java.lang.String
### Cause: java.lang.IllegalArgumentException: invalid comparison: java.util.Date and java.lang.String

原因:

在mybatisi写的sql中存在了对 《时间!= ''》的判断,其实只要 《时间!=null》即可

<if test="claimSearchEntity.registDateStart != null and claimSearchEntity.registDateStart!='' and claimSearchEntity.registDateEnd != null and claimSearchEntity.registDateEnd!=''">
    and ri.report_date BETWEEN #{claimSearchEntity.registDateStart} and #{claimSearchEntity.registDateEnd}
</if>

2,在mybatis中可以使用<![CDATA[这]]> 这样的格式,因为在mybatis sql是写在xml文件中,可能会有部分符号存在转义的可能性,而在xml中,<![CDATA[这]]>保证了不会被转义,所以可以使用这个格式保证符号,特殊代码的准确性


遇到问题后续继续更新

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值