返回一个列表,我已经有一个行映射器实现

2022-09-02 11:14:46

在我的UserDao中,我想返回一个用户列表。

我已经有一个.UserRowMapperimplements RowMapper<User>

我该怎么做?

我试过了:

List rows = getJdbcTemplate().queryforList("select * from users");

for(Map row : rows) {

}

但是不确定如何使用我的UserRowMapper填充User对象并将其插入到我的用户列表列表中。

顺便说一句,这是我应该使用的最好的通用列表吗:

List<User> users = new ArrayList<User>();

?


答案 1

使用 JdbcTemplate.query(String sql, RowMapper<T> rowMapper, Object...args),并且您可以传入占位符的可变数量的值作为最后一个参数:?

public List<User> findById(int userId)
{
    return getJdbcTemplate().query(
            "SELECT * FROM users WHERE user_id=?",
            new UserRowMapper(),
            userId
        );
}

或者类似的东西:

public List<User> findByManyParams(int param1, int param2, String param3)
{
    return getJdbcTemplate().query(
            "SELECT * FROM users WHERE foo=? AND bar=? AND foobar=?",
            new UserRowMapper(),
            param1,
            param2,
            param3
        );
}

该方法实际上被重载了很多次,因此您通常可以找到至少一种在任何给定情况下都适合您所需的口味。query()


答案 2

使用 query(),而不是:queryForList()

List<User> users = getJdbcTemplate().query("select * from users", new UserRowMapper());

推荐