【发布时间】:2022-01-19 14:41:00
【问题描述】:
我应该执行光标移动以获取所有 Employee 实例。 考虑结果集是完全可滚动的(前后、开始、结束等)。 如果一个 Employee 有一个 Manager,它也应该包含它作为 Employee 实例。 这是一个包含一些列的 Employee 表。
ID INTEGER PRIMARY KEY,
FIRSTNAME VARCHAR(10),
LASTNAME VARCHAR(10),
MIDDLENAME VARCHAR(10),
POSITION VARCHAR(9),
MANAGER INTEGER,
HIREDATE DATE,
SALARY DOUBLE,
DEPARTMENT INTEGER,
CONSTRAINT FK_DEPTNO FOREIGN KEY (DEPARTMENT) REFERENCES DEPARTMENT (ID)
例如插入表格:
INSERT INTO EMPLOYEE VALUES (7654, 'JOHN', 'MARTIN', 'MARIA', 'SALESMAN', 7698, TO_DATE('28-9-1981', 'DD-MM-YYYY'), 1250, 30);
INSERT INTO EMPLOYEE VALUES (7698, 'JOHN', 'BLAKE', 'MARIA', 'MANAGER', 7839, TO_DATE('1-5-1981', 'DD-MM-YYYY'), 2850, 30);
经理ID 第一个员工是7698,需要打印有关经理的所有信息而不是 ID。最终需要是
[Employee{id=7654, fullName=FullName{firstName=JOHN, lastName=MARTIN, middleName=MARIA}, position=SALESMAN, hired=1981-09-28, salary=1250.00000, manager=Employee{id=7698, fullName=FullName{firstName=JOHN, lastName=BLAKE, middleName=MARIA}, position=MANAGER, hired=1981-05-01, salary=2850.00000, manager=null}}
我创建了两个地图,并使用if 将员工添加到地图employ,将经理添加到地图manag
Map<Integer, Employee> manag = new HashMap<>();
Map<Integer, Employee> employ = new HashMap<>();
BigInteger id = BigInteger.valueOf(resultSet.getInt("id"));
FullName fullname = new FullName(resultSet.getString("firstName"), resultSet.getString("lastName"), resultSet.getString("middleName"));
Position position = Position.valueOf(resultSet.getString("position"));
LocalDate hired = resultSet.getObject("hiredate", LocalDate.class);
BigDecimal salary = BigDecimal.valueOf(resultSet.getInt("salary"));
Employee manager = null;//String.valueOf(resultSet.getInt("manager")) !=null? new Employee(id, fullname, position, hired, salary, null) : null;
if(resultSet.getString("position").equalsIgnoreCase("manager")) {
Integer key = resultSet.getInt("id");
Employee value = new Employee(id, fullname, position, hired, salary, null);
manag.put(key, value);
} else {
Integer key = resultSet.getInt("id");
Employee value = new Employee(id, fullname, position, hired, salary, null);
employ.put(key, value);
但是我接下来需要做什么来解决这个问题?
【问题讨论】: