美文网首页Java编程
基于Spring Data JPA框架的文章归档实现

基于Spring Data JPA框架的文章归档实现

作者: smileNicky | 来源:发表于2017-04-06 22:06 被阅读109次

    目录

    [TOC]

    前言

    最近在写自己的个人博客系统,框架采用SpringMVC、Spring4.0、Spring Data/JPA组合,本博客就文档归档功能在Spring Data JPA框架下是如何实现的进行记录。

    文章信息设计

    数据暂时这样设计,仅供学习参考,对于文章评论回复,栏目之间的关联还没设计,不过本博客的目的是记录文档归档功能的实现,这个并不会影响


    这里写图片描述

    文档归档信息查询

    然后介绍点击文档归档信息后,获取文章信息的实现,其实也就是按年月查询文档信息

    在Repository类里添加方法:

    /**
         * 按月份获取文章信息
         * @param month
         *          月份数
         * @return
         */
        @Query("from Article a where date_format(a.articleTime,'%Y%m')=date_format((:yearmonth),'%Y%m') "
                + "order by articleTime desc")
        public List<Article> findArticleByMonth(@Param("yearmonth")Date yearmonth);
    
    

    Service类里调用:

        /**
         * 按月份获取文章信息
         * @param month
         * @return
         */
        @Transactional
        public List<Article> findArticleByMonth(Date month){
            return articleRepository.findArticleByMonth(month);
        }
    

    在JSP页面写入,getArchiveArticles.do就是要访问的url,传入yearmonth参数就可以

    <h2><p>文章归档</p></h2>
    <ul class="news">
      <c:choose>
        <c:when test="${not empty archiveArticles }">
            <c:forEach items="${archiveArticles }" var="ac">
            <li><a href="getArchiveArticles.do?yearmonth=${ac[0]}-${ac[1]}">
            ${ac[0]}年${ac[1]}月(${ac[2] })</a></li>
            </c:forEach>
        </c:when>
        <c:otherwise>
            <li><a href="#">没有相关数据</a></li>
        </c:otherwise>  
      </c:choose>
    </ul>
    

    在Controller类里进行处理:

    @RequestMapping("/getArchiveArticles")
        public ModelAndView getArticleByMonth(HttpServletRequest request){
            String yearMonthString = request.getParameter("yearmonth");
            System.out.println("month:"+yearMonthString);
            ModelAndView mv = this.getModelAndView();
            
            Date yearmonth = DateUtils.parse("yyyy-MM", yearMonthString);
            
            List<Article> articles = articleService.findArticleByMonth(yearmonth);
    
            mv.addObject("articles", articles);
            mv.setViewName("myblog/article/archive_articles");
            return mv;
        }
    
    这里写图片描述

    附录(工具类、公共类代码)

    DateUtils.java、BaseController.java类
    DateUtil.java

    package net.myblog.utils;
    
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.Locale;
    
    import net.myblog.core.Constants;
    
    public class DateUtils {
        
        public static String formatDate(Date date) throws ParseException{
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            return dateFormat.format(date);
        }
        
         /**
           * 解析日期,注:此处为严格模式解析,即20151809这样的日期会解析错误
           * 
           * @param pattern
           * @param date
           * @return
           */
          public static Date parse(String pattern, String date){
            return parse(pattern, date, Constants.LOCALE_CHINA);
          }
    
          /**
           * 解析日期,注:此处为严格模式解析,即20151809这样的日期会解析错误
           * 
           * @param pattern
           * @param date
           * @param locale
           * @return
           */
          public static Date parse(String pattern, String date, Locale locale){
            SimpleDateFormat format = new SimpleDateFormat(pattern, locale);
            format.setLenient(false);
            Date result = null;
            try{
              result = format.parse(date);
            }catch(Exception e){
              e.printStackTrace();
            }
    
            return result;
          }
    
    }
    
    

    BaseController.java:

    package net.myblog.web.controller;
    
    import javax.servlet.http.HttpServletRequest;
    
    import org.springframework.web.context.request.RequestContextHolder;
    import org.springframework.web.context.request.ServletRequestAttributes;
    import org.springframework.web.servlet.ModelAndView;
    
    public class BaseController {
        
        /**
         * 得到request对象
         */
        public HttpServletRequest getRequest() {
            HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
            
            return request;
        }
        
        /**
         * 得到ModelAndView
         */
        public ModelAndView getModelAndView(){
            return new ModelAndView();
        }
    
    
    }
    
    

    相关文章

      网友评论

        本文标题:基于Spring Data JPA框架的文章归档实现

        本文链接:https://www.haomeiwen.com/subject/hnccattx.html