用mybatis在java中实现分组查询各个部门根据部门(code升序)下工资最高和工资最低的人员姓名、和工资金额(工资最低的要求显示必须大于1000)
时间: 2024-05-05 15:17:55 浏览: 62
可以使用MyBatis的动态SQL和子查询语句来实现这个需求。以下是一个可能的实现方式:
```xml
<select id="getSalaryMinMaxByDept" resultType="map">
SELECT d.name AS deptName, e1.name AS minName, e1.salary AS minSalary, e2.name AS maxName, e2.salary AS maxSalary
FROM department d
LEFT JOIN employee e1 ON e1.dept_id = d.id AND e1.salary = (SELECT MIN(salary) FROM employee WHERE dept_id = d.id AND salary > 1000)
LEFT JOIN employee e2 ON e2.dept_id = d.id AND e2.salary = (SELECT MAX(salary) FROM employee WHERE dept_id = d.id)
ORDER BY d.code ASC
</select>
```
这个查询语句首先以部门为基础表,左连接两个子查询语句,分别查询每个部门下工资最低和最高的员工信息。如果没有符合条件的员工,则对应的minName和minSalary字段为null。注意,工资最低的要求显示必须大于1000,所以子查询语句中的salary字段需要加上这个限制条件。
在Java代码中,可以通过调用MyBatis的SqlSession对象的selectOne或selectList方法来执行这个查询语句,然后将结果转换成需要的格式返回给调用方。
阅读全文