java 实现用户列表查询 包含用户的信息和对应的角色、部门
时间: 2024-01-22 09:20:45 浏览: 65
要实现用户列表查询,包含用户的信息和对应的角色、部门,可以通过以下步骤进行:
1. 建立用户、角色、部门三张数据库表,分别存储用户的基本信息、角色的名称和角色的描述、部门的名称和部门的描述。
2. 在用户表中添加角色和部门外键字段,用于表示该用户所属的角色和部门。
3. 编写Java代码,建立User、Role、Department实体类,并在User类中添加Role和Department对象属性,用于表示该用户所属的角色和部门。
4. 使用JDBC连接数据库,查询用户表并关联角色表和部门表,获取所有用户的信息及其对应的角色和部门信息。
5. 将查询结果封装到User对象中,并将所有User对象组成的列表返回给前端页面。
下面是一个简单的示例代码:
```java
public List<User> getUserList() {
List<User> userList = new ArrayList<>();
try (Connection conn = DriverManager.getConnection(url, username, password);
Statement stmt = conn.createStatement()) {
ResultSet rs = stmt.executeQuery("SELECT u.*, r.name AS role_name, r.description AS role_desc, d.name AS dept_name, d.description AS dept_desc FROM user u INNER JOIN role r ON u.role_id = r.id INNER JOIN department d ON u.dept_id = d.id");
while (rs.next()) {
User user = new User();
user.setId(rs.getInt("id"));
user.setUsername(rs.getString("username"));
user.setPassword(rs.getString("password"));
user.setEmail(rs.getString("email"));
Role role = new Role();
role.setId(rs.getInt("role_id"));
role.setName(rs.getString("role_name"));
role.setDescription(rs.getString("role_desc"));
user.setRole(role);
Department dept = new Department();
dept.setId(rs.getInt("dept_id"));
dept.setName(rs.getString("dept_name"));
dept.setDescription(rs.getString("dept_desc"));
user.setDepartment(dept);
userList.add(user);
}
} catch (SQLException e) {
e.printStackTrace();
}
return userList;
}
```