我使用JSON如何java.util.Date映射到ibatis的MySql的日期,當我需要輸入通過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數據庫。 我像查詢數據庫:
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>
我有一個prameter地圖作爲
<parameterMap id="ValidatePersonMap" type="java.util.HashMap">
<parameter property="dateOfBirth" javaType="java.util.Date" jdbcType="DATE" mode="IN"/>
</parameterMap>
我不是能夠得到database.It的任何結果不會選擇任何行,即使價值exists.I已經檢查了讓利驗證檢查失敗了。如果我在JSON中將dateOfBirth傳遞爲null,那麼我會得到結果。
我也寫成如下測試用例和設置請求:
Date dob = new Date(73,7,26);
request.setDateOfBirth(dob);
當我從測試用例將值作爲上面提到我從數據庫中獲取的結果。 只有當我使用json獲取請求參數時纔會出現問題。
- 的JSON格式,並存儲在數據庫的格式相同
- 一個解決我必須爲java.util.Date的手動轉換爲字符串在上面的格式,並把它作爲字符串。但這是非常糟糕的方法,客戶不會喜歡它。
閱讀此http:/ /stackoverflow.com/a/2306051/579580 – aviad 2012-02-09 06:37:07