添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
void testGetAll(){ QueryWrapper lqw = new QueryWrapper(); //lqw.select("count(*) as count"); //SELECT count(*) as count FROM user //lqw.select("max(age) as maxAge"); //SELECT max(age) as maxAge FROM user //lqw.select("min(age) as minAge"); //SELECT min(age) as minAge FROM user //lqw.select("sum(age) as sumAge"); //SELECT sum(age) as sumAge FROM user lqw.select("avg(age) as avgAge"); //SELECT avg(age) as avgAge FROM user List> userList = userDao.selectMaps(lqw); System.out.println(userList);

二、分组查询

需求:分组查询,完成group by的查询使用

@SpringBootTest 
class Mybatisplus02DqlApplicationTests { 
    @Autowired 
    private UserDao userDao; 
    @Test 
    void testGetAll(){ 
        QueryWrapper<User> lqw = new QueryWrapper<User>(); 
        lqw.select("count(*) as count,tel"); 
        lqw.groupBy("tel"); 
        List<Map<String, Object>> list = userDao.selectMaps(lqw); 
        System.out.println(list); 

groupBy分组,最终的sql语句为:

 SELECT count(*) as count,tel FROM user GROUP BY tel

聚合与分组查询无法使用lambda表达式完成

MP只是对MyBatis增强,如果MP实现不了,我们可以直接在DAO接口中使用MyBatis的方式实现

三、等值查询

需求:根据用户名和密码查询用户信息

@SpringBootTest 
class Mybatisplus02DqlApplicationTests { 
    @Autowired 
    private UserDao userDao; 
    @Test 
    void testGetAll(){ 
        LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>(); 
        lqw.eq(User::getName, "Jerry").eq(User::getPassword, "jerry"); 
        User loginUser = userDao.selectOne(lqw); 
        System.out.println(loginUser); 

eq():相当于 = ,对应的sql语句为

SELECT id,name,password,age,tel FROM user WHERE (name = ? AND password = ?)

selectList:查询结果为多个或者单个

selectOne:查询结果为单个

public void selectById() { UserInfo userInfo = userInfoMapper.selectById(123); System.out.println(userInfo); 聚合查询(aggregate) 聚合查询函数是对一组值执行计算,并返回单个值。 Django 使用聚合查询前要先从 django.db.models 引入 Avg、Max、Min、Count、Sum(首字母大写)。 from django.db.models import Avg,Max,Min,Count,Sum # 引入函数 聚合查询返回值的数据类型是字典。 聚合函数 aggregate() 是 QuerySet 的一个终止子句, 生成的一个汇总值,相当于 count()。 使用 aggregate() 后,数据类型就变为字典 相信我们经常会遇到这样的场景:想要了解双十一天猫购买化妆品的人员中平均消费额度是多少(这可能有利于对商品价格区间的定位);或者不同年龄段的化妆品消费占比是多少(这可能有助于对商品备货量的预估)。 这个时候就要用到分组查询分组查询的目的是为了把数据分成多个逻辑组(购买化妆品的人员是一个组,不同年龄段购买化妆品的人员也是组),并对每个组进行聚合计算的过程:。 分组查询的语法格式如下: select cname, group_fun,... from tname [where condition] group by group_expression [having group_con QueryWrapper<MetaItem> wrapper = new QueryWrapper<MetaItem>() .select("set_id,count(0) as field_count") .in("set_id",setids) .groupBy("set_id"); List<Map<String,Object>> list. 今天遇到了一个求总数返回的情况,我一细想这不是用sum就完事了吗。但是仔细想想,MybatisPlus好像没有直接使用sum的api。虽然没有直接提供,但是办法还是有的,下面就分享下如何实现的:首先如果使用sql是这么写的:ok,既然知道了sql怎么写的,那就开始写代码吧注意,本文主要以sum为例,但是也同时适用于其他聚合函数,比如avg,min,max。 此处以OrderPayTrace表中根据支付类型的不同,统计金额总和为例,并且还可以根据创建时间段来查询筛选。 QueryWrapper<OrderPayTrace> queryWrapper = new QueryWrapper<>(); queryWrapper.select("type as 'type',IFNULL(sum(amount),0) as 'amountSum'") .between(!StringUtils. //总收益 Order order =new Order(); QueryWrapper<Order> queryWrapper = new QueryWrapper<Order>(); queryWrapper.select("sum(price) as sumAll"); Order ord= orderService.getOne(queryWrapper); SELECT * FROM DATA LIMIT 6 SELECT * FROM DATA LIMIT 5,6 SELECT * FROM DATA WHERE sales <= 25 LIMIT 6 dataMapper.selectPage(new Page<data>(1,6),null); dataMapper.selectPage(new Page<data>(2 关于Mybatis plus 使用QueryWrapper,group by + having ,自定义查询字段使用方法 QueryWrapper<CustomerBussUser> qw = new QueryWrapper<>(); qw.select("CUST_ID,count(*) as count1");//查询自定义列 qw.eq("user_id",userId); qw.eq("isvalid","1"); qw.groupBy("cust_Id"); DROP TABLE IF EXISTS `student`; CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) CHARA