目录
第一步:了解查询语句规则
第二步:了解wrapper语句规则
对于wrapper语句来说
likeright = "内容%"
like = "%内容%"
likeleft = "%内容"
eq就是等于,属于精准查询
如果不加wrapper.or()那么默认用and连接
结果就会是这样,上述我们也说过了,And的优先级大于or

我们如何解决这个问题:(手动加括号!)
wrapper.and就相当于加小括号
wrapper.and(wq -> {
wq.likeRight(ContentEntity::getContentTags, contentTags + split)
.or()
.like(ContentEntity::getContentTags, split + contentTags + split)
.or()
.likeLeft(ContentEntity::getContentTags, split + contentTags)
.or()
.eq(ContentEntity::getContentTags, contentTags);
});
wrapper.eq(ContentEntity::getContentPublishStatus, 1)
.eq(ContentEntity::getDel, 0)
.orderByDesc(ContentEntity::getContentSort);
那么生成的条件语句通过
System.out.println(wrapper.getCustomSqlSegment());
打印结果如下 :
WHERE (
-- 标签匹配条件
(
content_tags LIKE #{ew.paramNameValuePairs.MPGENVAL1} OR
content_tags LIKE #{ew.paramNameValuePairs.MPGENVAL2} OR
content_tags LIKE #{ew.paramNameValuePairs.MPGENVAL3} OR
content_tags = #{ew.paramNameValuePairs.MPGENVAL4}
)
-- 状态筛选条件
AND content_publish_status = #{ew.paramNameValuePairs.MPGENVAL5}
AND del = #{ew.paramNameValuePairs.MPGENVAL6}
)
ORDER BY content_sort DESC