Spring JdbcTemplate queryForList使用BeanPropertyRowMapper进行实体对象映射

queryForList方法返回的是一个List<Map<String, Object>>,其中每个Map对象代表一行数据,键为列名,值为对应的值。默认情况下,它不会直接返回自定义的User对象。

如果您希望使用queryForList方法返回User对象的列表,可以使用BeanPropertyRowMapper来进行结果映射。BeanPropertyRowMapper是Spring提供的一个用于将行数据映射到Java对象的实用类。

以下是如何使用BeanPropertyRowMapper进行User对象的结果映射示例:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
import java.util.List;

@Repository
public class UserRepository {

    private final JdbcTemplate jdbcTemplate;

    @Autowired
    public UserRepository(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }

    public List<User> getAllUsers() {
        String sql = "SELECT * FROM users";
        return jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(User.class));
    }

    // 其他方法...

}

在上述示例中,通过使用new BeanPropertyRowMapper<>(User.class)作为query方法的第二个参数,将查询结果自动映射到User对象的列表中。

使用BeanPropertyRowMapper时,请确保User类的属性名称与数据库表中的列名相匹配,这样才能正确进行映射。

这样,调用getAllUsers方法将返回一个List<User>,其中每个元素都是一个User对象,表示数据库中的一行数据。