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

被折叠的 条评论
为什么被折叠?



