发布于2026-07-12 阅读(0)
扫一扫,手机访问
除了增删改查,Mybatis-Plus的条件构造器里还有一大杀器——select。它的核心任务很简单:精准选取你需要的数据库字段,避免把整张表的大字段都捞出来。毕竟在实际项目中,冗余查询不仅浪费带宽,还拖慢接口响应速度。

下面直接进入主题,看看select到底怎么用。
有些场景下,你不想查某个字段。比如一张animal表里有个age字段,但业务上不需要它。这时候可以用Lambda风格的谓词过滤。
方法签名:
QueryWrapper
select(Class entityClass, Predicate predicate)
@GetMapping(value = "/test")
public List test(Animal arg) {
QueryWrapper wrapper = Wrappers.query(arg)
.select(Animal.class, item -> ! item.getColumn().equals("age"));
return animalService.list(wrapper);
}
控制台打印的SQL语句如下:
SELECT id, create_time, NAME, update_time, del_flag, hobby FROM animal WHERE del_flag =0
看,age字段被完美排除,其他字段全部保留。这种写法特别适合那些字段多、但只想剔除个别列的情况。
这个是最常规的用法:手写你想查的字段名列表。
方法签名:
QueryWrapper
select(String... columns)
@GetMapping(value = "/test")
public List test(Animal arg) {
QueryWrapper wrapper = Wrappers.query(arg)
.select("id", "name", "hobby");
return animalService.list(wrapper);
}
控制台打印的SQL语句如下:
SELECT id,name,hobby FROM animal WHERE del_flag=0
字段少、且确定要查哪些列时,这种方式最直接。
select并不只是用来选普通列——它还能配合聚合函数一起使用。比如你得按部门统计平均年龄,然后按部门id降序输出。
方法签名:
QueryWrapper
select(String... columns)
@GetMapping(value = "/test")
public List test(Animal arg) {
QueryWrapper wrapper = Wrappers.query(arg)
.select("dept_id", "A VG(age) AS a vgAge")
.groupBy("dept_id")
.orderByDesc("dept_id");
return animalService.list(wrapper);
}
控制台打印的SQL语句如下:
SELECT dept_id, A VG( age ) AS a vgAge FROM animal WHERE del_flag = 0 GROUP BY dept_id ORDER BY dept_id DESC
注意这里select里直接用了"A VG(age) AS a vgAge",相当于把聚合逻辑也写进了构造器中,干净利落。
select方法虽然看起来简单,但在实际开发中非常实用。不论是为了性能优化排除冗余列,还是结合聚合函数做统计,它都能帮你写出一手漂亮的动态查询。与其在XML里反复拼SQL,不如用MP的构造器把这些活全包了。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8