a.主题列表按 最后更新时间 进行排序
数据库SQL语句中没有if..else的判断语句,但是oracle中有decode()函数可以实现这种判断语句,但是还可以用case..when..then ..else..end,功能更加强大
但此次运用特殊字段lastUpdateTime解决,提高了效率,只用查询一张表:
b.主题列表排序,让所有置顶帖排在最上面,然后,让置顶帖,精华帖,普通帖按最后更新时间进行排序。
public List<Topic> getByForum(Forum forum) {
//TODO 排序,让所有置顶帖排最上面,然后,让置顶帖,精华帖,普通帖并按最后更新时间排序。
//FIXME 怎么排序
return getSession().createQuery("FROM Topic t WHERE t.forum=? ORDER BY (CASE t.type WHEN 2 THEN 2 ELSE 0 END) DESC,"
+" t.lastUpdateTime DESC")
.setParameter(0,forum).list();
}
c.case 对象 when 条件1 then 结果1 .. else 其他结果 end 可以用在select/where/order by 后面
例如:
例如: