gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 03:00:46 25 4
gpt4 key购买 nike

我正在尝试使用带有几种不同类型参数的 where 子句从数据库中检索记录。这是我编写的简单方法,其中我将breedId 和gender 作为参数传递。

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;
}

我运行了这个方法,但得到了以下异常。谁能让我知道如何将多个参数传递给 jdbcTemplate.query(),我对它有点陌生。
{
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"
}

最佳答案

请用

public List<Dog> listByBreedIdAndGender(long breedId, String gender) {  
return jdbcTemplate.query("SELECT * FROM dog_entity WHERE breed__id = :breedId AND gender =:gender",
new MapSqlParameterSource()
.addValue("breedId", breedId)
.addValue("gender", gender));
}

请确保 jdbcTemplate 为 NamedParameterJdbcTemplate .

如果您需要使用 JdbcTemplate然后
    public List<Dog> listByBreedIdAndGender(long breedId, String gender) {  
return jdbcTemplate.query
("SELECT * FROM dog_entity WHERE breed__id = ? AND gender = ?",
new Object[] { breedId, gender },
new DogRowMapper());
}

或者如果您坚持使用私有(private)查询方法
public List<Dog> listByBreedIdAndGender(long breedId, String gender) {  
return query
("SELECT * FROM dog_entity WHERE breed__id = ? AND gender = ?",
new Object[] { breedId, gender });
}

private List<Dog> query(String sql, Object[] parameters) {
List<Dog> dogs = jdbcTemplate.query(sql, parameters, new DogRowMapper());
return dogs;

}

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

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

关于spring - 将不同类型的参数传递给 jdbctemplate 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27663170/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com