统计查询
.selectOne
只返回特定的列:queryWrapper.select(列名字符串数组)
selectMaps用于返回自定义字段和查询特定字段时避免其他字段为null
selectObjs用于返回结果的第一个字段
selectCount不能带select,因为它查询的时记录数量,对应于sql中的count(1)
selectOne用于输出一条结果,如果多与一条报错
select 分组,聚合,并返回map
selectOne 返回一条记录
selectCount
selectObjs 返回第一列数据
select 返回map
其他以条件构造器的方法
1、selectMap:List集合的泛型不再是实体,而是map集合。其中key表示字段名,value表示字段值。
使用场景1:当实体类属性非常多时,不易查看。如果返回的是一个实体类,那么即使我们设定了返回字段,那么它的值为null,但是属性仍然存在。如果返回的是Map类型,当指定了返回字段时,那么没返回的就不会存在。
使用场景2:当返回的不是一条一条记录时,也就是返回的字段不在实体类属性中,比如一些统计,像平均值,最大值,最小值这样的。
2、selectObject:List集合的泛型不再是实体,而是Object,只返回第一个字段的值。其他的会被舍弃。
使用场景:只返回一列时可以使用它。
3、selectCount:查询符合条件的总记录数的。
注意:使用它时,就不能指定返回的列了,因为它会在后面拼接COUNT(1)。
4、selectOne:查询符合条件的数据,只会返回一条数据。
注意:查询的结果必须是一条或者查不到(多于1条就会报错)。
如图所示笔记
selectMaps
selectOne
selectCount
selectObjs
需求11的用法
selectMaps2
selectMaps
selectOne只能查返回数据中仅一条的
selectCount的用法
分组以及聚合函数
以map的形式,比实体类的优势在于选择查询时,不会有那么多null的字段键返回.
其他条件构造器的使用
queryWrapper.select("id","name").like("name","雨").lt("age",40);
List<Map<String,Object>> userList = userMapper.selectMaps(queryWrapper);
/**
按照直属上级分组,查询每组的平均年龄、最大年龄、最小年龄。并且
只取年龄总和小于500的组
select avg(age) avg_age,min(age) min_age,max(age) max_age from user group by manager_id having sum(age) < 500
queryWrapper.select("avg(age) avg_age","min(age) min_age","max(age) max_age")groupBy("manager_id").having("sum(age)<{0}",500);
**/