MyBatis-Plus_查询返回实体对象还是map?

在常见场景下:返回数据建议使用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) < ?
}

想学习更多微服务、分布式、中间件、数据库、项目快速构建等系列技术
请访问http://gblfy.com
让我们一起进步!!!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gblfy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值