MybatisPlus如何用wrapper语句灵活连接多查询条件
目录
第一步:了解查询语句规则
第二步:了解wrapper语句规则
编辑我们如何解决这个问题:(手动加括号!)
第一步:了解查询语句规则
第二步:了解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} ORcontent_tags LIKE #{ew.paramNameValuePairs.MPGENVAL2} ORcontent_tags LIKE #{ew.paramNameValuePairs.MPGENVAL3} ORcontent_tags = #{ew.paramNameValuePairs.MPGENVAL4})-- 状态筛选条件AND content_publish_status = #{ew.paramNameValuePairs.MPGENVAL5}AND del = #{ew.paramNameValuePairs.MPGENVAL6}
)
ORDER BY content_sort DESC