需求分析
对于文章的管理中有一个置顶的需求,有一个按照时间排序的需求
设计
有一个置顶字段,专门去区分是否置顶的字段
难点
主要是怎么在sql中去将置顶的查出来,避免在业务代码中不必要的操作
主要的代码如下
order by
sa.sort Desc,
// 重点
CASE when sa.is_top = 1 THEN 0 ELSE 1 END
例子
<select id="getArticleInfos" resultMap="SitecontentArticleVO">
SELECT st.article_id,
st.article_title,
st.publish_status,
st.article_auther,
st.update_date,
st.create_date,
/*适用站点json*/
st.site_ids,
/*审核状态*/
st.check_status,
st.article_source_type,
st.is_top,
st.sort,
sac.article_category_name,
sac.article_category_id,
sacj.article_category_join_id
FROM sitecontent_article st
LEFT JOIN sitecontent_article_category_join sacj ON st.article_id = sacj.article_id
LEFT JOIN sitecontent_article_category sac ON sacj.article_category_id = sac.article_category_id
AND sac.is_del = 0
<where>
st.is_del = 0
<if test="articleTitle != null and articleTitle != ''">
AND st.article_title LIKE CONCAT( '%', #{articleTitle}, '%' )
</if>
<if test="articleCategoryIds != null">
<foreach collection="articleCategoryIds" item="articleCategoryId"
open="AND sac.article_category_id IN (" separator="," close=")">
#{articleCategoryId}
</foreach>
</if>
AND st.sys_inner_id = #{sysInnerId}
</where>
ORDER BY
// 多条件order by
CASE when st.is_top = 1 THEN 0 ELSE 1 END,
st.create_date Desc,
st.sort Desc
// 上面是错的注意顺序(先正常的一些排序在置顶)
order by
sa.sort Desc,
CASE when sa.is_top = 1 THEN 0 ELSE 1 END
</select>
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/96187.html