一、动态条件查询
平时使用最多的场景,根据传入的条件动态拼接查询,类似mybatis中的if标签。根据条件判断是否添加条件查询,添加exist子句查询,根据关键字模糊查询id和关键字等。如下所示:
public Predicate buildPredicate() {
QWxUser qWxUser = QWxUser.wxUser;
QUserTag qUserTag = QUserTag.userTag;
QTag qTag = QTag.tag;
BooleanBuilder predicate = new BooleanBuilder();
if (StrUtil.isNotBlank(appId)) {
predicate.and(qWxUser.appId.eq(appId));
}
if (StrUtil.isNotBlank(keyword)) {
String fuzzKeyword = "%" + keyword + "%";
predicate.and(qWxUser.wxUserId.stringValue().like(fuzzKeyword).or(qWxUser.nickname.like(fuzzKeyword)));
}
if (StrUtil.isNotBlank(openId)) {
predicate.and(qWxUser.openId.eq(openId));
}
if (StrUtil.isNotBlank(unionId)) {
predicate.and(qWxUser.unionId.eq(unionId));
}
Optio