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
对象,表示数据库中的一行数据。