mybatisPlus动态模糊查询集合中每一条数据代码示例

发布时间:2024年01月10日

要实现动态地对集合中的每一条数据进行like查询,你可以使用Java 8的Stream API结合Lambda表达式来实现。

以下是三种示例代码:
示例1:使用forEach方法

List<String> strings = new ArrayList<>();
strings.add("1");
strings.add("2");
strings.add("3");

QueryWrapper<Object> wrapper = new QueryWrapper<>();
strings.forEach(str -> wrapper.like("Category", str));

这个示例使用了forEach方法,它遍历了strings列表中的每一个元素,并将其传递给Lambda表达式。Lambda表达式通过调用like方法来动态生成查询条件。
示例2:使用map方法和reduce方法

List<String> strings = new ArrayList<>();
strings.add("1");
strings.add("2");
strings.add("3");

QueryWrapper<Object> wrapper = new QueryWrapper<>();
strings.stream()
       .map(str -> wrapper.like("Category", str))
       .reduce((w1, w2) -> w1.or().and(w2))
       .ifPresent(w -> wrapper.and(w));

这个示例使用了map方法和reduce方法来动态生成QueryWrapper对象。首先,map方法将集合中的每个元素转换为一个QueryWrapper对象,然后reduce方法将这些对象组合成一个单独的QueryWrapper对象。最后,我们将该对象传递给and方法,以将其添加到主查询条件中。
示例3:使用方法引用

List<String> strings = new ArrayList<>();
strings.add("1");
strings.add("2");
strings.add("3");

QueryWrapper<Object> wrapper = new QueryWrapper<>();
strings.stream()
       .map(wrapper::like)
       .reduce((w1, w2) -> w1.or().and(w2))
       .ifPresent(wrapper::and);

这个示例与第二个示例非常相似,但使用了方法引用来代替Lambda表达式。在这种情况下,我们使用wrapper::like引用了QueryWrapper对象的like方法。

无论使用哪种方法,最终结果都是相同的:生成一个基于集合中每个元素的动态查询条件。

文章来源:https://blog.csdn.net/weixin_44060488/article/details/135508760
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。