在常见场景下:返回数据建议使用map,不建议使用实体对象

    /**
* 1. 名字包含雨并且年龄小于40
* sql:name like '%雨%' and age < 40
* <p>
* 应用场景:
* 当表字段非常多,但是你只需要查询少数几列,
* 没必要返回的泛型为实体的list,如果返回的泛型为实体,绝大多字段都是null,这样做不优雅
* 用返回泛型为map建议使用
*/
@Test
public void selectByWrapperMaps() {
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.like("name", "雨").lt("age", 40);
//建议使用
List<Map<String, Object>> userList = userMapper.selectMaps(queryWrapper);
//不建议使用
// List<User> userList = userMapper.selectList(queryWrapper);
userList.forEach(System.out::println);
}
/*
sql形式:SELECT id,name,age,email,manager_id,create_time FROM user WHERE name LIKE ? AND age < ?
*/
    /**
* 按照直属上级分组,查询每组的平均年龄。最大年龄、最小年龄。
* 并且只取年龄总和小于500的组
* select avg(age) avg_age,min(age) min_age,max(age) max_age from user
* group by manager_id
* having sum(age) < 500 ;
*/

@Test
public void selectByWrapperMaps2() {
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.select("avg(age) avg_age", "min(age) min_age", "max(age) max_age")
.groupBy("manager_id")
.having("sum(age) < {0}", 500);

List<Map<String, Object>> userList = userMapper.selectMaps(queryWrapper);
userList.forEach(System.out::println);
// sql形式:SELECT avg(age) avg_age,min(age) min_age,max(age) max_age FROM user
// GROUP BY manager_id HAVING sum(age) < ?
}