我使用 JSON 将出生日期作为输入
{"dateOfBirth":"1973-08-26"}
该字段存在于Person.java
类中
import java.util.Date;
public class Person {
Date dateOfBirth;
//Some other fields
public void setDateOfBirth(Date dateOfBirth) {
this.dateOfBirth = dateOfBirth;
}
public Date getDateOfBirth() {
return dateOfBirth;
}
}
这映射到 mysql 数据库中的 person 表。 我正在查询数据库:
entityId = (Long) session.selectOne("ValidatePerson", registerUserRequestParams);
以下是我在 mapper.xml 中创建的条目
<select id="ValidatePerson" parameterMap="ValidatePersonMap" resultType="long">
select person.entityId
from person
where
//Some other Validation checks
<if test="dateOfBirth != null">
and person.dateOfBirth = #{dateOfBirth}
</if>
);
</select>
我有一个参数 Map 作为
<parameterMap id="ValidatePersonMap" type="java.util.HashMap">
<parameter property="dateOfBirth" javaType="java.util.Date" jdbcType="DATE" mode="IN"/>
</parameterMap>
我无法从数据库中获得任何结果。即使值存在,它也不会选择任何行。我已经检查过没有其他验证检查失败。如果我在 JSON 中将 dateOfBirth 作为 null 传递,那么我会得到结果。
我也写了一个测试用例和设置请求如下:
Date dob = new Date(73,7,26);
request.setDateOfBirth(dob);
当我如上所述从测试用例传递值时,我从数据库中获取结果。
只有当我使用 json 获取请求参数时才会出现问题。
- JSOn的格式和DB中存储的格式相同
- 我的一个解决方法是手动将 java.util.Date 转换为上述格式的字符串并将其作为字符串传递。但这是非常糟糕的方法,客户不会喜欢它。
最佳答案
关于java - 当我通过 JSON 输入时,如何在 Ibatis 中将 java.util.Date 映射到 MySql Date,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8834767/