spring – 将不同类型的参数传递给jdbctemplate查询

前端之家收集整理的这篇文章主要介绍了spring – 将不同类型的参数传递给jdbctemplate查询前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我试图通过使用where子句与几个不同类型的参数从数据库中检索记录.这是我写的一个简单的方法,我将breedId和gender作为参数传递.

  1. public ListsqlParameterSource(":breedId",breedId)
  2. .addValue(":gender",gender));
  3. }
  4. private Listsql,MapsqlParameterSource parameters) {
  5. Listsql,new DogRowMapper(),parameters);
  6. return dogs;
  7. }

我跑了这个方法,但得到了以下异常.任何人都可以让我知道如何将多个参数传递给jdbcTemplate.query(),我是一个新的.

  1. {
  2. timestamp: 1419637479460
  3. status: 500
  4. error: "Internal Server Error"
  5. exception: "org.springframework.dao.TransientDataAccessResourceException"
  6. 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"
  7. path: "/api/2/m"
  8. }
最佳答案
请用

  1. public ListsqlParameterSource()
  2. .addValue("breedId",breedId)
  3. .addValue("gender",gender));
  4. }

请确保jdbcTemplate是NamedParameterJdbcTemplate.

如果你需要使用JdbcTemplate那么

  1. public List

或者如果您坚持使用私有查询方法

  1. public Listsql,Object[] parameters) {
  2. Listsql,parameters,new DogRowMapper());
  3. return dogs;

}

请确保breed__id具有正确的_字符数.

概念是使用NamedParameterJdbcTemplate和参数指定的名称:name(例如:gender)或带有位置参数的简单JdbcTemplate(例如new Object [] {breedId,gender}其中breedId匹配第一个?性别是第二个?) .

猜你在找的Spring相关文章