MyBatis入坑:IllegalArgumentException: java.util.Date and java.lang.String
1. 问题描述:
<update id="updateUser" parameterType="user"> UPDATE user <set> <if test="username != null and username != ''"> username = #{username}, </if> <!-- 注意这里的birthday是Date类型 --> <if test="birthday != null and birthday != ''"> birthday = #{birthday}, </if> <if test="sex != null and sex != ''"> sex = #{sex}, </if> <if test="address != null and address != ''"> address = #{address} </if> </set> WHERE id = #{id} </update>
出现问题:
org.apache.ibatis.exceptions.PersistenceException: ### Error updating 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
2. 问题分析:
出现此问题是因为Data类型数据不能用于判断是否是空字符串 ’ '。只可以判断是否为null。
3. 问题处理
<if test="birthday != null"> birthday = #{birthday}, </if>
即:只对其进行判断是否为null即可。