3-10 其他使用条件构造器的方法

应用场景:只需要返回个别字段

场景一:

Java代码:

    @Test
    public void selectByWrapperMaps(){
        QueryWrapper<User> queryWrapper = new QueryWrapper();
        queryWrapper.select("name","age").like("name","雨").lt("age",40);

        List<Map<String, Object>> userList = userMapper.selectMaps(queryWrapper);
        userList.forEach(System.out::println);
    }

输出结果:

DEBUG==>  Preparing: SELECT name,age FROM user WHERE (name LIKE ? AND age < ?)
DEBUG==> Parameters: %雨%(String), 40(Integer)
TRACE<==    Columns: name, age
TRACE<==        Row: 张雨琪, 39
TRACE<==        Row: 刘红雨, 28
DEBUG<==      Total: 2
{name=张雨琪, age=39}
{name=刘红雨, age=28}

场景二:

按照直属上级分组,查询每组平均年龄、最大年龄、最小年龄。并且只取年龄综合小于500的组。
select avg(age) avg_age,min(age) min_age,max(age) max_age from user group by manager_id having sum(age) < 500
Java代码:

    @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);
    }

输出结果:

DEBUG==>  Preparing: SELECT avg(age) avg_age,min(age) min_age,max(age) max_age FROM user GROUP BY manager_id HAVING sum(age)<?
DEBUG==> Parameters: 500(Integer)
TRACE<==    Columns: avg_age, min_age, max_age
TRACE<==        Row: 40.0000, 40, 40
TRACE<==        Row: 26.7143, 25, 31
TRACE<==        Row: 25.0000, 25, 25
TRACE<==        Row: 28.0000, 28, 28
TRACE<==        Row: 33.5000, 28, 39
DEBUG<==      Total: 5
{max_age=40, avg_age=40.0000, min_age=40}
{max_age=31, avg_age=26.7143, min_age=25}
{max_age=25, avg_age=25.0000, min_age=25}
{max_age=28, avg_age=28.0000, min_age=28}
{max_age=39, avg_age=33.5000, min_age=28}

场景三:只返回一列

Java代码:

    @Test
    public void selectByWrapperObjs(){
        QueryWrapper<User> queryWrapper = new QueryWrapper();
        queryWrapper.select("id","name").like("name","雨").lt("age",40);

        List<Object> userList = userMapper.selectObjs(queryWrapper);
        userList.forEach(System.out::println);
    }

输出结果:

DEBUG==>  Preparing: SELECT id,name FROM user WHERE (name LIKE ? AND age < ?)
DEBUG==> Parameters: %雨%(String), 40(Integer)
TRACE<==    Columns: id, name
TRACE<==        Row: 1094590409767661570, 张雨琪
TRACE<==        Row: 1094592041087729666, 刘红雨
DEBUG<==      Total: 2
1094590409767661570
1094592041087729666

场景四:返回总数

Java代码:

    @Test
    public void selectByWrapperCount(){
        QueryWrapper<User> queryWrapper = new QueryWrapper();
        queryWrapper.like("name","雨").lt("age",40);

        Integer count = userMapper.selectCount(queryWrapper);
        System.out.println("总记录数" + count);
    }

输出结果:

DEBUG==>  Preparing: SELECT COUNT( 1 ) FROM user WHERE (name LIKE ? AND age < ?)
DEBUG==> Parameters: %雨%(String), 40(Integer)
TRACE<==    Columns: COUNT( 1 )
TRACE<==        Row: 2
DEBUG<==      Total: 1
总记录数2
场景五:只返回一条结果,多余一条会报错

Java代码:

    @Test
    public void selectByWrapperOne(){
        QueryWrapper<User> queryWrapper = new QueryWrapper();
        queryWrapper.like("name","刘红雨").lt("age",40);

        User user = userMapper.selectOne(queryWrapper);
        System.out.println(user);
    }

输出结果:

DEBUG==>  Preparing: SELECT id,name,age,email,manager_id,create_time FROM user WHERE (name LIKE ? AND age < ?)
DEBUG==> Parameters: %刘红雨%(String), 40(Integer)
TRACE<==    Columns: id, name, age, email, manager_id, create_time
TRACE<==        Row: 1094592041087729666, 刘红雨, 28, lhy@baomidou.com, 1088248166370832856, 2019-01-11 14:20:20.0
DEBUG<==      Total: 1
User(id=1094592041087729666, name=刘红雨, age=28, email=lhy@baomidou.com, managerId=1088248166370832856, createTime=2019-01-11T14:20:20)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值