您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
05-JDBC-API详解-ResultSet(结果集通过ResultSet遍历存储到实体类集合)
发布时间:2024-11-13 19:15:43编辑:雪饮阅读()
-
接下来我们将之前的account数据表中新增一个name字段,且类型是字符串类型。
那么我们可以使用ResultSet的getXXX方法从每个item中取字段,按字段顺序号进行取(这里需要注意,这不是索引,必须是数据表中的字段顺序号,比如id在第一个字段,取id就入参为1,money为第二个字段,则入参为2,而xxx则对应类型,intl类型,则是getInt,string类型则是getString)
则实现如
@Test
public void testResultSet() throws Exception {
String url="jdbc:mysql://192.168.217.132/demo?useSSL=false";
String username="root";
String password="1448169a3cb137d7";
Connection conn= DriverManager.getConnection(url,username,password);
Statement stmt=conn.createStatement();
String sql5="select * from account ";
ResultSet rs=stmt.executeQuery(sql5);
while(rs.next()){
System.out.println(rs.getInt(1));
System.out.println(rs.getInt(2));
System.out.println(rs.getString(3));
System.out.println("---------------------");
}
rs.close();
stmt.close();
conn.close();
}
当然getXxx方法也是支持按不同参数类型重载的,所以也支持按字段名来取值。
如
System.out.println(rs.getInt("id"));
System.out.println(rs.getInt("money"));
System.out.println(rs.getString("name"));
其实这里我数据库里面money存储类型是int,但也支持按Double取值
System.out.println(rs.getDouble("money"));
那么规范的做法应该是封装一个Account的实体类,去实现下对应属性的getter和setter,以及toString方法,这些只要你定义了对应属性,直接用IntelliJ IDEA直接就能快速完成,不用一个个敲代码实现。
package com;
public class Account {
private int id;
private double money;
@Override
public String toString() {
return "Account{" +
"id=" + id +
", money=" + money +
", name='" + name + '\'' +
'}';
}
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public double getMoney() {
return money;
}
public void setMoney(double money) {
this.money = money;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
然后进一步实现如
ArrayList<Account> list=new ArrayList<>();
while(rs.next()){
Account account=new Account();
account.setId(rs.getInt("id"));
account.setMoney(rs.getDouble("money"));
account.setName(rs.getString("name"));
list.add(account);
}
System.out.println(list);
关键字词:JDBC,ResultSet