mybatisplus FIND_IN_SET
时间: 2023-10-05 18:06:13 浏览: 126
FIND_IN_SET是MySQL中的一个函数,用于判断一个值是否存在于一个逗号分隔的字符串列表中。在mybatis-plus中,你可以使用lambda().apply方法来拼接SQL,实现类似的功能。下面是一个示例代码:
List<String> realIds = crmProgrammeService.getIdsByRealEstateNames(name);
if (!CollectionUtils.isEmpty(realIds)){
if (realIds.size() == 1){
queryWrapper.like("real_estate_ids", realIds.get(0));
} else {
for (int i = 0; i < realIds.size(); i++) {
if (i == 0) {
queryWrapper.apply(null != realIds.get(i), "(find_in_set({0},real_estate_ids)", realIds.get(i));
} else {
if (i == realIds.size() - 1) {
queryWrapper.or().apply(null != realIds.get(i), "find_in_set({0},real_estate_ids))", realIds.get(i));
} else {
queryWrapper.or().apply(null != realIds.get(i), "find_in_set({0},real_estate_ids)", realIds.get(i));
}
}
}
}
} else {
queryWrapper.isNull("real_estate_ids");
}
这段代码首先通过crmProgrammeService.getIdsByRealEstateNames(name)方法获取到realIds列表。然后根据列表的长度来确定使用like还是find_in_set函数进行查询条件的拼接。如果realIds只有一个元素,使用like方法拼接查询条件;如果realIds有多个元素,使用循环和apply方法拼接find_in_set函数的查询条件,并使用or方法进行逻辑连接。如果realIds为空,查询条件为real_estate_ids为空。
阅读全文