我有List employeeList对象和遍历结果集,然后在employeeList中添加员工详细信息,如果在遍历过程中有同一个员工,则需要在其角色上附加现有属性。
while(rs.next()){
ListIterator<Employee> itr = employeeList.listIterator();
while (itr.hasNext()) {
if(employeeList.getId() == rs.getLong("ID"))){
// need to append roles in employee
}
}
}
如果结果集中有同一位员工,我想在员工中添加角色。 例如:雇用Ram拥有2个角色Admin和standard,因此第一次它会使用employee.setrole(rs.getString(“ RoleName”))设置角色,但是第二次我需要在同一员工中添加角色。我该怎么做。
答案 0 :(得分:0)
对于初学者来说,在更新结果集时,我将使用Map而不是列表,以在更新角色之前在id上查找员工。
Map<Integer, Employee> empMap = employeeList.stream().collect(Collectors.toMap(e -> e.getId(), e));
while (rs.next) {
Employee e = empMap.get(rs.getLong("ID"));
if (e != null) {
String role = rs.getString("RoleName");
if (e.getRoleName() == null) {
e.setRoleName(role));
} else {
e.setRoleName(e.getRole() + ", " + role);
}
}
}
如果可能的话,最好在Employee类的方法中添加角色名称功能
public void addRoleName(String role) {
if (this.role == null) {
this.role = role;
} else {
this.role += ", " + role;
}
}
这简化了循环
while (rs.next) {
Employee e = empMap.get(rs.getLong("ID"));
if (e != null) {
e.addRoleName(rs.getString("RoleName"));
}
}