1、查询指定字段

目前我们在查询数据的时候,什么都没有做默认就是查询表中所有字段的内容,我们所说的查询投影即不查询所有字段,只查询出指定内容的数据。

具体如何来实现?

@SpringBootTest
class Mybatisplus02DqlApplicationTests {

   @Autowired
   private UserDao userDao;
   
   @Test
   void testGetAll(){
       LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();
       lqw.select(User::getId,User::getName,User::getAge);
       List<User> userList = userDao.selectList(lqw);
       System.out.println(userList);
  }
}
  • select(...)方法用来设置查询的字段列,可以设置多个,最终的sql语句为:

    SELECT id,name,age FROM user
  • 如果使用的不是lambda,就需要手动指定字段

    @SpringBootTest
    class Mybatisplus02DqlApplicationTests {

       @Autowired
       private UserDao userDao;
       
       @Test
       void testGetAll(){
           QueryWrapper<User> lqw = new QueryWrapper<User>();
           lqw.select("id","name","age","tel");
           List<User> userList = userDao.selectList(lqw);
           System.out.println(userList);
      }
    }
    • 最终的sql语句为:SELECT id,name,age,tel FROM user

2、聚合查询

需求:聚合函数查询,完成count、max、min、avg、sum的使用

count:总记录数

max:最大值

min:最小值

avg:平均值

sum:求和

@SpringBootTest
class Mybatisplus02DqlApplicationTests {

   @Autowired
   private UserDao userDao;
   
   @Test
   void testGetAll(){
       QueryWrapper<User> lqw = new QueryWrapper<User>();
       //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<Map<String, Object>> userList = userDao.selectMaps(lqw);
       System.out.println(userList);
  }
}

为了在做结果封装的时候能够更简单,我们将上面的聚合函数都起了个名称,方面后期来获取这些数据

3、分组查询

需求:分组查询,完成 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表达式来完成

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

最新文章

  1. Javascript动态执行JS(new Function与eval比较)
  2. mvc学习中的问题汇总
  3. android中webview调用拨号盘
  4. wamp出现You don’t have permission to access/on this server提示的解决方法
  5. OpenCV MAT基本图像容器
  6. Memcached 笔记与总结(8)Memcached 的普通哈希分布算法和一致性哈希分布算法命中率对比
  7. JS加密库Crypto-JS SEA加密
  8. 富文本常用封装(NSAttributedString浅析)
  9. 移除IIS默认的响应头
  10. [改善Java代码] 枚举项数量限定为64个以内
  11. Funny Sheep(思维)
  12. Java单例模式的线程安全问题
  13. [HDU2037]贪心入门
  14. ⑿bootstrap组件 缩略图 警告框 进度条 基础案例
  15. uva11059(最大乘积)
  16. [Alpha阶段]事后分析博客
  17. DevExpress ASP.NET Core Controls 2019发展蓝图(No.4)
  18. 事件冒泡(event bubbling)与事件捕捉(event capturing)
  19. widnow 下配置php开发环境
  20. vi/vim 文字处理器常用命令

热门文章

  1. [Python]-openpyxl模块Excel数据处理-读取公式的结果
  2. Windows Admin Center无法访问
  3. Windows 10无法显示无线网络连接
  4. kvm安装windows使用virtio驱动
  5. Elasticsearch Reindex性能提升10倍+实战
  6. 动态存储管理实战:GlusterFS
  7. 在图片不被裁剪时opencv绕图片中任意点旋转任意角度
  8. 路径分析—QGIS+PostgreSQL+PostGIS+pgRouting(一)
  9. 监控 HTTP 服务器的状态(测试返回码)shell脚本
  10. 记一个深层的bug