Mybatis invalid comparison: java.util.Date and java.lang.String

在Spring Boot项目中,使用MyBatis进行数据查询时遇到一个异常,原因是尝试将日期类型与字符串进行比较。错误信息提示`invalid comparison: java.util.Date and java.lang.String`。问题出在XML映射文件中,对于查询条件的判断不正确。原始代码尝试在startTime和endTime不为空且不为''时进行比较,但startTime和endTime已经是日期类型,不需要与空字符串比较。修正后的代码去除了这个无效的条件,只判断日期是否为空,从而解决了问题。

报错信息

2021-03-31 10:13:25.121 [http-nio-8103-exec-1] ERROR o.a.c.c.C.[.[.[.[dispatcherServlet] - Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException:

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] with root cause

java.lang.IllegalArgumentException: invalid comparison: java.util.Date and java.lang.String

UserParam

@Data
public class UserParam {
    @ApiModelProperty("手机号")
	private String mobile;
    @ApiModelProperty("开始时间")
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	private Date startTime;
	@ApiModelProperty("结束时间")
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	private Date endTime;
}

XML Statement 标签

 <select id="pageQueryUser" resultType="com.qingke.studytour.manager.entity.dto.UserDetailVo">
        select id, open_id , mobile, register_time, official_account_follow_status from qk_user_info where 1=1
    <if test="userParam.mobile!=null and userParam.mobile!=''">
        AND mobile = #{userParam.mobile}
    </if>
    <if test="userParam.startTime!=null and userParam.startTime!='' and userParam.endTime!=null and userParam.endTime!=''">
        AND register_time &gt; #{userParam.startTime} and register_time &lt; #{userParam.endTime}
    </if>
    </select>

报错原因
传入的userParam.startTime 和userParam.endTime均为日期类型,无法进行和空串的判断,
userParam.startTime!=’'是无法的比较,去除这个无效的比较语句

<select id="pageQueryUser" resultType="com.qingke.studytour.manager.entity.dto.UserDetailVo">
        select id, open_id , mobile, register_time, official_account_follow_status from qk_user_info where 1=1
    <if test="userParam.mobile!=null and userParam.mobile!=''">
        AND mobile = #{userParam.mobile}
    </if>
    <if test="userParam.startTime!=null  and userParam.endTime!=null ">
        AND register_time &gt; #{userParam.startTime} and register_time &lt; #{userParam.endTime}
    </if>
    </select>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值