关于处理JDBC返回值问题

本文介绍了处理JDBC返回值的两种情况。当返回值仅有一行数据时,可以通过ResultSet的get方法或自定义类来获取。当有多行数据时,可以使用ArrayList结合自定义类,或者利用Spring的JDBCTemplate进行封装,包括queryForMap、queryForList、query以及queryForObject等方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、当返回值仅有一行数据时

此时可以使用ResultSet类的get方法,如获取字符串类型则getString()、获取int型则getInt(),括号之中的参数为要查询字段在数据库中的列名。

		ResultSet resultSet = stat.executeQuery(sql);
        if(resultSet.next()){//游标下移,如果next返回true证明有数据,否则就是到底了
            System.out.println("查询到 "+resultSet.getString("name"));
        }

除此之外,也可以采用自定义类来装在一列数据。比如:数据库中某条记录有 id、name、age三列。则定义一个自定义类:

class Stu{
    private int id,age;//使用私有,更规范安全
    private String name;

    public int getId() {
        return id;
    }
    public int getAge() {
        return age;
    }
    public String getName() {
        return name;
    }
    public void setId(int id) {
        this.id = id;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public void setName(String name) {
        this.name = name;
    }
}

在读取ResultSet时逐一通过get方法赋值给该自定义类的对象即可。

二、当有多行数据时

1.可以采用 一 中的办法,定义一个集合ArrayList,泛型设置为自定义类。
在读取ResultSet时采用while循环,条件为res.next()。
将记录的每一条数据赋值给自定义类对象后,集合调用add方法将该对象装入集合。当循环完成后,即可用增强for遍历集合,输出全部数据。

while(res.next()){
                stu = new Stu();
                stu.setName(res.getString("name"));
                stu.setAge(res.getInt("age"));
                stu.setId(res.getInt("id"));
                list.add(stu);
            }
            for (Stu stu1 : list) {
                System.out.println("姓名:"+stu1.getName()+"年龄:"+stu1.getAge()+"id:"+stu.getId());
            }

其中,list为ArrayList集合,泛型为自定义类Stu

2.在引入Spring的Template之后,可以使用JDBCTemplate类对象的方法封装数据库的返回值。
(1)queryForMap(sql,占位符值);
该方法的返回值为一个Map集合,列名为key,值为value。可通过Map集合的相关方法读取。

	注意:该方法仅能读取一行记录,与 一 的功能基本一致。

(2)queryForList(sql,占位符值);
该方法返回值为一个List集合。数据库每一个记录的信息封装到一个Map集合当中,多个Map集合再被封装到List集合当中。故解析时可以遍历List后再遍历Map来解析出每一列数据。

(3)query(sql,自定义封装类型)
query(sql, new BeanPropertyRowMapper<Stu>(Stu.class)
该方法可以通过设置泛型和类类型,返回一个自定义类的封装。并将每一个自定义类对象放入List数组。与(2)类似,(2)是封装数据为Map类后放入List;这里是封装数据为 自定义 类后放入List

(4)queryForObject(sql, 数据类型.class)可以转化为指定数据类型

queryForObject(sql, Long.class);

这个方法一般与聚合函数联合使用,比如返回记录数量,count(id)、影响行数等。返回值一般为某一数据类型的变量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值