querywrapper select
时间: 2025-05-21 11:35:27 浏览: 13
### QueryWrapper 中 `select` 方法的使用
在 MyBatis-Plus 中,`QueryWrapper` 提供了灵活的方式来构建 SQL 查询语句。其中,`select` 方法用于指定查询的目标字段,而不是默认查询实体类中的所有字段。这可以提高性能并减少不必要的数据传输。
以下是关于 `QueryWrapper` 和 `select` 方法的具体用法和示例:
#### 基本语法
`queryWrapper.select(String... sqlSelect)`
该方法接受一个或多个字符串参数,表示要查询的字段名。支持 MySQL 函数或其他自定义表达式[^3]。
---
#### 示例代码
以下是一个完整的示例,展示如何使用 `QueryWrapper` 的 `select` 方法来查询特定字段以及应用 MySQL 函数处理:
```java
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import java.util.List;
public class QueryWrapperExample {
public static void main(String[] args) {
// 创建 QueryWrapper 实例
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
// 使用 select 方法指定查询字段和服务端计算逻辑
queryWrapper.select("id", "name", "concat('Mr.', name) as fullName", "sum(age) over () as totalAge");
// 添加其他查询条件 (例如 eq 表示等于)
queryWrapper.eq("status", 1);
// 执行查询操作
List<Map<String, Object>> result = userMapper.selectMaps(queryWrapper);
// 输出结果
result.forEach(System.out::println);
}
}
```
在这个例子中:
- `"id"` 是普通的数据库字段。
- `"name"` 同样是从表中直接获取的字段。
- `"concat('Mr.', name) as fullName"` 展示了如何利用 MySQL 字符串拼接函数生成新的字段。
- `"sum(age) over () as totalAge"` 利用了窗口函数计算总年龄[^3]。
---
#### 高级功能:设置 LIMIT 条件
如果需要限制返回的结果数量,可以通过链式调用来实现:
```java
// 设置查询前两条记录
queryWrapper.last("LIMIT 2");
```
此代码片段会附加到最终生成的 SQL 语句末尾,从而控制返回的数据量[^3]。
---
#### 注意事项
1. **字段映射**:当使用别名(如 `as serviceCode`)时,需确保接收对象中有对应的属性名称匹配,或者改用 Map 类型存储结果。
2. **SQL 注入防护**:MyBatis-Plus 已经内置防止 SQL 注入机制,但仍建议避免动态拼接未经验证的用户输入作为字段名传递给 `select()` 方法[^1]。
---
### 总结
通过以上介绍可以看出,`QueryWrapper` 结合 `select` 方法不仅能够精确控制所需检索的信息范围,还能引入复杂的业务逻辑运算至查询层面上完成,极大简化程序开发流程的同时也提升了运行效率。
阅读全文
相关推荐


















