en passant les différents types d'arguments de la requête jdbctemplate
Je suis en train de récupérer les enregistrements de la base de données en utilisant la clause where avec quelques-uns des différents types d'arguments. C'est la méthode simple que j'ai écrit où je suis de passage breedId et de genre comme arguments.
public List<Dog> listByBreedIdAndGender(long breedId, String gender) {
return query("SELECT * FROM dog_entity WHERE breed__id = ? AND gender = ?",
new MapSqlParameterSource(":breedId", breedId)
.addValue(":gender", gender));
}
private List<Dog> query(String sql, MapSqlParameterSource parameters) {
List<Dog> dogs = jdbcTemplate.query(sql, new DogRowMapper(), parameters);
return dogs;
}
J'ai couru cette méthode, mais est inférieur à celui de l'exception. Quelqu'un peut-il me faire savoir comment passer plusieurs arguments à la jdbcTemplate.query(), je suis un peu nouveau pour elle.
{
timestamp: 1419637479460
status: 500
error: "Internal Server Error"
exception: "org.springframework.dao.TransientDataAccessResourceException"
message: "PreparedStatementCallback; SQL [SELECT * FROM dog_entity WHERE breed__id = ? AND gender = ?]; Invalid argument value: java.io.NotSerializableException; nested exception is java.sql.SQLException: Invalid argument value: java.io.NotSerializableException"
path: "/api/2/m"
}
OriginalL'auteur Suleman khan | 2014-12-26
Vous devez vous connecter pour publier un commentaire.
Veuillez utiliser
Assurez-vous que le jdbcTemplate est NamedParameterJdbcTemplate .
Si vous avez besoin d'utiliser JdbcTemplate puis
ou si vous insistez sur l'utilisation de la privé de la méthode de requête
}
Assurez-race__id a bon nombre de caractères_.
Le concept consiste à utiliser NamedParameterJdbcTemplate avec les paramètres désignés par :nom (comme :sexe) ou de simples JdbcTemplate avec les paramètres positionnels (comme new Object[] { breedId, genre } où breedId correspond à la première ? et le sexe la deuxième ?).
Je suis à l'aide de cette importation
import org.springframework.jdbc.core.JdbcTemplate;
.Donc, utiliser l'un je recommande.
Merci pour votre réponse rapide! Je me suis fait avoir certaines des méthodes qui seront de plus en plus différents types d'arguments, c'est ce que je suis privé de la méthode, de sorte que je n'ai pas de répéter la même chose encore et encore. est-il de toute façon j'ai juste à modifier dans l'appel privé où je veux avec ce que arguments.
Désolé c'est hors sujet, mais pour moi, c'est votre méthode privée presque inutile. Si vous ne vous appelez la méthode privée vous sauver la variable d'instance jdbcTemplate et le fest-filaire nouveau DogRowMapper. Cela ne vous aide pas beaucoup, ni en termes de taper, ni en termes d'abstraction.
OriginalL'auteur Michal