ITDragon博客 用Java 实现文章内容上一篇下一篇功能,逻辑和分页不一样。效果和本页面底部一样。采用的是Spring data jpa
SQL语句实现该功能
- SQL 语句查询的是该数据的上一条和下一条
- Spring data jpa 若是要执行原生的sql语句,需要添加
nativeQuery=true
-
DAO 层代码如下
@Query(value="SELECT * FROM xlblog WHERE id IN (SELECT CASE WHEN SIGN(id - ?1) > 0 " + "THEN MIN(id) WHEN SIGN(id - ?1) < 0 THEN MAX(id) END AS id FROM xlblog WHERE id <> ?1 " + "GROUP BY SIGN(id - ?1) ORDER BY SIGN(id - ?1)) ORDER BY id ASC",nativeQuery=true) List<Blog> fetchNearBlogsById(Long id); -
Service 层代码如下
public List<Blog> findIdAndTitle(Long id){ return blogDao.fetchNearBlogsById(id); } -
Controller 层代码如下
List<Blog> blogUrls = blogService.findIdAndTitle(Long.valueOf(blogId)); model.addAttribute("blogUrls",blogUrls); -
前端调用代码
<c:forEach items="${blogUrls}" var="urls"> <a href="${ctx}/blog/detail/${urls.id}.html" class="urls-title" >${urls.title}</a><br> </c:forEach> -
jquery 修饰代码
var objUrlTitles = $(".markdown").find(".urls-title"); objUrlTitles.each(function(e){ if (0 == e) { $(this).prepend("<label>上一篇:</label>"); } else { $(this).prepend("<label>下一篇:</label>"); } });