java执行 mybatisplus+lambda表达式 完成请求参数age为13,name为list<String> 参数值为长度不定的 如“张,王,李,赵”等,对于user 表中age为13 ,name 姓氏为参数中包含的 模糊查询
时间: 2024-10-08 07:26:59 浏览: 34
在MyBatisPlus中结合Lambda表达式进行SQL动态查询时,你可以使用`List<Criteria>`或者`LamdaQueryWrapper`来构建动态的条件。假设你有一个User实体类,其中包含age和name字段,可以按照以下步骤完成模糊查询:
```java
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
public class UserRepository {
public IPage<User> findUsersByAgeAndName(int age, List<String> names) {
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
// 添加年龄等于13的条件
wrapper.eq("age", age);
// 使用StringJoiner拼接姓名模糊查询条件
StringJoiner sj = new StringJoiner(" OR name LIKE '%', '%");
names.forEach(name -> sj.add("%" + name + "%"));
String condition = sj.toString(); // "name LIKE '%张%' OR name LIKE '%王%' ..."
// 将动态条件添加到查询中
wrapper.lambda().like("name", condition);
// 创建分页对象并执行查询
Page<User> page = new Page<>(1, 10); // 设置当前页数和每页大小
return userMapper.selectPage(page, wrapper.build());
}
}
```
在这个例子中,我们创建了一个LambdaQueryWrapper,设置了age等于13的固定条件,然后使用StringJoiner将传入的姓氏列表转换为LIKE操作符的字符串,实现了对name字段的模糊查询。最后返回的是一个IPage对象,用于分页处理。
阅读全文