comment carte java.util.Date de MySql Date dans Ibatis quand je prends de la contribution par le biais d'JSON
Je prends de la date de naissance de l'entrée en utilisant JSON
{"dateOfBirth":"1973-08-26"}
Ce champ existe dans Person.java
classe
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;
}
}
Elle est mappée à personne de la table dans la base de données mysql.
Je suis d'interrogation de la base de données comme:
entityId = (Long) session.selectOne("ValidatePerson", registerUserRequestParams);
Suivantes sont les entrées que je fais dans mon 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>
J'ai un prameter Carte comme
<parameterMap id="ValidatePersonMap" type="java.util.HashMap">
<parameter property="dateOfBirth" javaType="java.util.Date" jdbcType="DATE" mode="IN"/>
</parameterMap>
Je ne suis pas en mesure d'obtenir un résultat à partir de la base de données.Il ne sélectionnez pas de suite, même si la valeur existe.J'ai vérifié qu'aucun des autres contrôles de validation sont défaillants. Si je passe dateOfBirth nulle en JSON puis-je obtenir de résultat.
J'ai également écrit un scénario de test et de réglage de la demande comme suit:
Date dob = new Date(73,7,26);
request.setDateOfBirth(dob);
Quand j'ai passer des valeurs à partir de cas de test comme mentionné ci-dessus-je obtenir de résultat à partir de la base de données.
Problème ne se produit que lorsque je reçois des paramètres de la requête à l'aide de json.
- Le format JSOn et le format stocké dans la bd sont même
- Un travail autour de ce que j'ai est de convertir manuellement java.util.Date de Chaîne de caractères dans le format ci-dessus et de passer en tant que chaîne de caractères. Mais c'est assez mauvaise approche et le client n'aimerais pas ça.
OriginalL'auteur Aneesh Garg | 2012-01-12
Vous devez vous connecter pour publier un commentaire.
Utilisation Timestamp. Envisager Joda time plug. ...et de lire cette réponse.
Ces trois sera absolument faire de la magie.
Bonne chance!
OriginalL'auteur aviad
Avez-vous essayé de formater le java date. Peut-être que les formats sont différents, de sorte qu'il ne peut pas correspondre entre le JSON et le stockées dans votre base de données?
OriginalL'auteur thai_pham
Cela a fonctionné pour moi:
mysql type d'attribut est
Timestamp
et j'format de la date pour le JSON en Java comme ceci:
Je puis utiliser
fakeit
OriginalL'auteur GeegeeK