在 Java 中使用 JDBC 连接数据库时,queryForList 是 Spring Framework 中 JdbcTemplate 类的一个方法,用于执行查询语句并将结果封装为一个列表(List)的形式返回。这个方法通常用于查询多行记录,并将每行记录的数据以 Map 的形式存储在列表中。
以下是 queryForList 方法的使用方法及示例:
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
// 创建 JdbcTemplate 对象
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
// 编写查询语句
String sql = "SELECT * FROM employees";
// 使用 queryForList 方法执行查询
List<Map<String, Object>> resultList = jdbcTemplate.queryForList(sql);
// 遍历结果列表
for (Map<String, Object> row : resultList) {
System.out.println("Employee ID: " + row.get("employee_id"));
System.out.println("First Name: " + row.get("first_name"));
// ... 依次输出其他字段
}
除了 queryForList,还有一些其他类似的方法用于执行查询操作,它们的用法如下:
query 方法:执行查询并将结果映射到自定义对象中,通常需要实现 RowMapper 接口来进行结果映射。
List<Employee> employees = jdbcTemplate.query(sql, new RowMapper<Employee>() {
@Override
public Employee mapRow(ResultSet rs, int rowNum) throws SQLException {
Employee employee = new Employee();
employee.setId(rs.getInt("employee_id"));
employee.setFirstName(rs.getString("first_name"));
// ... 设置其他属性
return employee;
}
});
queryForObject 方法:执行查询并返回单个对象,如果结果不唯一或为空会抛出异常。
String name = jdbcTemplate.queryForObject
("SELECT first_name FROM employees WHERE employee_id = ?", String.class, 1);
queryForMap 方法:执行查询并将单行结果映射为一个 Map 对象。
Map<String, Object> employeeMap =
jdbcTemplate.queryForMap
("SELECT * FROM employees WHERE employee_id = ?", 1);
System.out.println("First Name: " + employeeMap.get("first_name"));
这些方法都是 Spring Framework 提供的方便数据库查询的工具,能够帮助简化 JDBC 编程并提高开发效率。