MybatisPlus 模糊查询数组中的所有字符串

发布时间 2023-04-27 10:06:44作者: onecyl

 

List<IcvDevice> deviceList = icvDeviceMapper.selectList(Wrappers.<IcvDevice>query()
                                .or(qw -> pidList.forEach(sbbh -> qw.like("sbbh", sbbh)))
                                .eq("sssblx", "防水号角扬声器"));

 

这段代码使用了MyBatis-Plus的链式查询(wrapper)和Lambda表达式语法,实现了根据一组设备编号(pidList)进行模糊查询的功能,并且筛选设备类型为“防水号角扬声器”的设备列表。

具体解释如下:

- `icvDeviceMapper`是一个MyBatis的Mapper接口,用于操作IcvDevice实体类对应的数据表。
- `Wrappers.<IcvDevice>query()`方法返回一个空的Wrapper对象,表示我们要查询IcvDevice实体类对应的表。
- `or(qw -> pidList.forEach(sbbh -> qw.like("sbbh", sbbh)))`表示使用or关键字,将多个like条件合并为一个条件,该条件使用Lambda表达式进行定义,其中qw是一个Lambda表达式参数,表示当前的查询条件,pidList是一个设备编号的列表,通过`forEach`方法遍历pidList,将每个设备编号进行模糊查询,添加到查询条件中,最终得到一个类似于:`sbbh like '%xxx%' or sbbh like '%yyy%' or ...`的查询条件。
- `eq("sssblx", "防水号角扬声器")`表示增加一个设备类型为“防水号角扬声器”的等值查询条件,该条件使用eq方法进行定义,其中“sssblx”是IcvDevice实体类对应的数据表中的字段名,后面的“防水号角扬声器”是要查询的设备类型。

最终,这段代码查询出来的结果是一个IcvDevice实体类的List,里面包含了所有符合上述查询条件的设备记录。