gpt4 book ai didi

java将结果集转换为列表

转载 作者:行者123 更新时间:2023-11-29 10:09:15 26 4
gpt4 key购买 nike

我想将我的结果集转换为对象列表。这是我的查询:

 String querystring1= "SELECT userID, privilege"
+ "FROM dbo.User order by userID, privilege";


userID privilege
------------------
1001 read
1001 write
1001 execute
1001 delete
1006 execute
1006 read
1006 write
1007 read
1007 write

我有一个用户定义的类:

public class User {
private int userID;
private List<String> userPrivelege;
}

我想将用户列表作为输出,这是我实现的代码:

   String previousId = null;  
List<String> PrivList= new ArrayList<String>();
List<User> allUserList= new ArrayList<User>();

while(result_set.next()) {
String userID = result_set.getString("userID");
String privilege = result_set.getString("privilege");
if (previousId == null) { // first time
User user = new User();
PrivList.add(privilege);
previousId=userID;
} else if (previousId.equals(userID) {
PrivList.add(privilege);
} else {
user.setUserPrivilege(PrivList);
allUserList.add(user);
PrivList.clear();
previousId=null;
}
}

问题是,除了创建的第一个用户对象之外,所有下一个用户对象总是缺少第一个值,这意味着用户 1006 将拥有 3 个权限之外的 2 个权限。有什么想法吗?

最佳答案

所有 User 对象都引用同一对象 List 权限,因为您没有为每个 User 创建一个新实例。相反,您只清除列表。
因此,所有用户都设置有 2 个权限,因为您处理的最后一个用户有 2 个权限。

所以替换:

 PrivList.clear();

作者:

 PrivList = new ArrayList<>();

关于java将结果集转换为列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50058127/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com