需求背景
有多组版本号区间需要查询,同时有需要跟其他条件的关系为and
AND ( ( (app_version_num BETWEEN ? AND ?) ) OR ( (app_version_num BETWEEN ? AND ?) ) ) AND create_time > ?
Mybatis plus nested、 or组合查询
lambdaWrapper.nested(wrapper -> {
for (int i = 0; i < versionList.size(); i++) {
if (i > 0) {
wrapper.or();
}
Long startVersion = versionList.get(i).getStartVersion();
Long endVersion = versionList.get(i).getEndVersion();
wrapper.nested(innerWrapper -> innerWrapper.between(Entity::getAppVersionNum,
startVersion,
endVersion
));
}
});