java中使用JDBC或者C3P0时,Query,QueryForObject,QueryForMap,QueryForList的用法

在 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 编程并提高开发效率。

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
package serv; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import org.springframework.dao.DataAccessException; import org.springframework.jdbc.core.RowMapper; import entity.Material; public class MaterialService extends BaseService { /** * 把一条材料信息加入到数据库 */ public void addMr(String mtime,String mzno,String mpeople,String mname,String mquantity,double mmoney,String mno){ try { String sql = "insert into Material(mtime,mzno,mpeople,mname,mquantity,mmoney,mno) VALUES(?,?,?,?,?,?,?)"; jt.update(sql,mtime,mzno,mpeople,mname,mquantity,mmoney,mno); } catch (DataAccessException e) { e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates. } } /** * 根据mno查询材料 */ public Material getmaterialBymno (String mno)throws DataAccessException{ Material material = null; try { String sql = "select * from material where mno= ?"; material = jt.queryForObject(sql,new MaterialRowMapper(), mno); } catch (DataAccessException e) { e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates. } return material; } /** *删除材料 ->1 * @param sno * @throws DataAccessException */ public void deleteMaterial(String mno) throws DataAccessException{ String sql = "delete from Material where mno=? "; jt.update(sql,mno); } /** * 获取所有材料信息 */ public ArrayList<Material> getAllMaterial(String mtime){ ArrayList<Material> al = null; try { String sql = "select * from material "; al = (ArrayList<Material>)jt.query(sql,new MaterialRowMapper()); } catch (DataAccessException e) { e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates. } return al; } private class MaterialRowMapper implements RowMapper<Material> { public Material mapRow(ResultSet rs, int rownum) throws SQLException { Material material= new Material(); material.setMno(rs.getString("mno")); material.setMname(rs.getString("mname")); material.setMtime(rs.getString("mtime")); material.setMpeople(rs.getString("mpeople")); material.setMzno(rs.getString("mzno")); material.setMquantity(rs.getString("mquantity")); material.setMmoney(rs.getDouble("mmoney")); return material; } } }
`queryForObject` 方法是一个常用的数据库查询方法,用于执行查询并返回单个对象的结果。以下是一个使用案例: 假设我们有一个名为 "users" 的数据库表,包含以下字段:id, name, age。 ```java import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; public class UserDao { private JdbcTemplate jdbcTemplate; public User getUserById(int id) { String sql = "SELECT * FROM users WHERE id = ?"; Object[] params = new Object[]{id}; User user = jdbcTemplate.queryForObject(sql, params, new UserRowMapper()); return user; } private static final class UserRowMapper implements RowMapper<User> { public User mapRow(ResultSet rs, int rowNum) throws SQLException { User user = new User(); user.setId(rs.getInt("id")); user.setName(rs.getString("name")); user.setAge(rs.getInt("age")); return user; } } } ``` 上述代码是一个简单的 UserDao 类,其包含一个 `getUserById` 方法,用于根据用户的 id 查询并返回用户对象。 在 `getUserById` 方法,我们首先定义了 SQL 查询语句,使用了占位符 "?" 来代替参数值。然后,我们创建了一个 Object 数组,将 id 作为参数值放入其。 接下来,我们使用 `jdbcTemplate.queryForObject` 方法执行查询,并传入 SQL 语句、参数数组和一个 RowMapper 对象。RowMapper 用于将查询结果集的每一行数据映射为一个 User 对象。 最后,我们将查询得到的 User 对象返回。 请注意,以上代码的 `User` 类是一个自定义的用户模型类,它包含了 id、name 和 age 属性,并提供了相应的 getter 和 setter 方法。 这只是 `queryForObject` 方法的一个简单示例,你可以根据实际需求进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值