Rt,怎么写这个wrapper呢?
例如我们有一个整数列表,数据库中存的是整数列表的字符串形式:
list | 数据库中的存储 |
---|---|
1,2,3 | [1,2,3] |
我们想查包含某几个数字的所有行。例如如果有1,那么结果中要有[1,2,3]、[1]。
// A
LambdaQueryWrapper<Xxx> lqw = new LambdaQueryWrapper<>();
A.eq(Xxx:getYyy());
List<Integer> list = new ArrayList<>();
list.add(1); list.add(2);
lqw.and(wp -> list.forEach(a -> {
wp.or(wpp -> wpp.like("[" + a + "]")
.or()
.like("[" + a + ","))
.or()
.like(" " + a + "]")
.or()
.like(" " + a + " ");
}));
上面的lqw相当于A,A.and()中 我们想要 (B or C or D),and中的wp就用来构造这个;wpp就是内层的B或C或D。wp用or来连接wpp,然后被lqw用and连接。