【发布时间】:2018-10-08 01:07:36
【问题描述】:
我想将我的结果集转换为对象列表。这是我的查询:
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 个特权。 有什么想法吗?
【问题讨论】:
-
你需要坚持jdbc吗?使用 ORM 将为您完成这项工作。另外,您解决此问题的方式意味着您的代码取决于您的查询(规范 orderby),您考虑过吗?
-
@Laurent B:在项目的实际状态下使用 ORM 会出现问题,因为要做的更改很多。
-
感谢大家对此的回答和讨论。我得到了它。我进行了更改并得到了预期的结果。
-
不值得一票(+1)。这是一个非常正确地表达的问题,包含解决它所需的所有信息。