Java开发学习(四十三)----MyBatisPlus查询语句之查询投影
2024-09-08 16:41:18
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的方式实现
最新文章
- Javascript动态执行JS(new Function与eval比较)
- mvc学习中的问题汇总
- android中webview调用拨号盘
- wamp出现You don’t have permission to access/on this server提示的解决方法
- OpenCV MAT基本图像容器
- Memcached 笔记与总结(8)Memcached 的普通哈希分布算法和一致性哈希分布算法命中率对比
- JS加密库Crypto-JS SEA加密
- 富文本常用封装(NSAttributedString浅析)
- 移除IIS默认的响应头
- [改善Java代码] 枚举项数量限定为64个以内
- Funny Sheep(思维)
- Java单例模式的线程安全问题
- [HDU2037]贪心入门
- ⑿bootstrap组件 缩略图 警告框 进度条 基础案例
- uva11059(最大乘积)
- [Alpha阶段]事后分析博客
- DevExpress ASP.NET Core Controls 2019发展蓝图(No.4)
- 事件冒泡(event bubbling)与事件捕捉(event capturing)
- widnow 下配置php开发环境
- vi/vim 文字处理器常用命令
热门文章
- [Python]-openpyxl模块Excel数据处理-读取公式的结果
- Windows Admin Center无法访问
- Windows 10无法显示无线网络连接
- kvm安装windows使用virtio驱动
- Elasticsearch Reindex性能提升10倍+实战
- 动态存储管理实战:GlusterFS
- 在图片不被裁剪时opencv绕图片中任意点旋转任意角度
- 路径分析—QGIS+PostgreSQL+PostGIS+pgRouting(一)
- 监控 HTTP 服务器的状态(测试返回码)shell脚本
- 记一个深层的bug