Mybatis-Plus查询返回Map类型数据
我们前面的案例都是返回的集合List;
集合List的弊端是会把所有的列属性都封装返回,但是我们有时候,只需要返回几个字段,然后再返回到用户端;
所以mp框架给我们提供了List
举例:
/**
* 查询每个部门的平均薪资
* sql: SELECT departmentId,AVG(salary) AS avg_salary FROM t_employee GROUP BY department_id;
*/
@Test
public void selectByQueryWrapper9(){
QueryWrapper<Employee> queryWrapper=new QueryWrapper();
// QueryWrapper queryWrapper2=Wrappers.query();
queryWrapper
.select("department_id","AVG(salary) AS avg_salary")
.groupBy("department_id");
List<Employee> employeeList = employeeMapper.selectList(queryWrapper);
System.out.println(employeeList);
}
返回值:
[Employee(id=null, name=null, birthday=null, gender=null, email=null, phoneNumber=null, salary=null, department_id=1, avg_salary=3000.0000), Employee(id=null, name=null, birthday=null, gender=null, email=null, phoneNumber=null, salary=null, department_id=2, avg_salary=3765.0000), Employee(id=null, name=null, birthday=null, gender=null, email=null, phoneNumber=null, salary=null, department_id=3, avg_salary=4000.0000), Employee(id=null, name=null, birthday=null, gender=null, email=null, phoneNumber=null, salary=null, department_id=4, avg_salary=5000.0000)]
没用的字段也返回了;
我们改用Map`
/**
* 查询每个部门的平均薪资(返回Map)
* sql: SELECT departmentId,AVG(salary) AS avg_salary FROM t_employee GROUP BY department_id;
*/
@Test
public void selectByQueryWrapper10ReturnMap(){
QueryWrapper<Employee> queryWrapper=new QueryWrapper();
// QueryWrapper queryWrapper2=Wrappers.query();
queryWrapper
.select("department_id","AVG(salary) AS avg_salary")
.groupBy("department_id");
List<Map<String, Object>> maps = employeeMapper.selectMaps(queryWrapper);
System.out.println(maps);
}
返回结果:
[{department_id=1, avg_salary=3000.0000}, {department_id=2, avg_salary=3765.0000}, {department_id=3, avg_salary=4000.0000}, {department_id=4, avg_salary=5000.0000}]
这样的结果才比较友好;