假设你的员工信息表名为employee,包含字段id(员工ID)、name(员工姓名)、salary(薪资)、hire_date(入职日期),你可以使用MyBatis的动态SQL语句来查询入职两年到三年之间员工的最高薪资和最低薪资的员工信息。

首先,在你的Mapper文件中,定义一个方法来执行这个查询操作:

<select id="getEmployeeInfo" resultType="map">
  SELECT MAX(salary) AS max_salary, MIN(salary) AS min_salary, id, name, salary, hire_date
  FROM employee
  WHERE hire_date >= #{startDate} AND hire_date <= #{endDate}
  GROUP BY id, name, salary, hire_date
</select>

然后,在你的Java代码中,调用这个方法并传入查询的起始日期和结束日期:

public List<Map<String, Object>> getEmployeeInfo(Date startDate, Date endDate) {
  try (SqlSession session = sqlSessionFactory.openSession()) {
    EmployeeMapper mapper = session.getMapper(EmployeeMapper.class);
    Map<String, Object> params = new HashMap<>();
    params.put("startDate", startDate);
    params.put("endDate", endDate);
    return mapper.getEmployeeInfo(params);
  }
}

最后,你可以在调用代码中使用这个方法来获取入职两年到三年之间员工的最高薪资和最低薪资的员工信息:

Date startDate = // 设置起始日期
Date endDate = // 设置结束日期
List<Map<String, Object>> employeeInfo = getEmployeeInfo(startDate, endDate);
for (Map<String, Object> info : employeeInfo) {
  System.out.println("ID: " + info.get("id"));
  System.out.println("姓名: " + info.get("name"));
  System.out.println("薪资: " + info.get("salary"));
  System.out.println("入职日期: " + info.get("hire_date"));
  System.out.println("最高薪资: " + info.get("max_salary"));
  System.out.println("最低薪资: " + info.get("min_salary"));
  System.out.println("---------------------------");
}

这样,你就可以获取到入职两年到三年之间员工的最高薪资和最低薪资的员工信息了


原文地址: https://www.cveoy.top/t/topic/ihTI 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录