良いJAVAのページングの実現

13161 ワード

     ,   ,         

 



 



Page.java  //   。        ,       



package com.core.common;



import java.util.List;



public class Page<T> {



 



private int pageIndex;//   



private int pageSize;//    



private int totalCount;//         



private List<T> pageData;//         _       



private int startRow;//         



private int totalPage;//   



 



public Page(int pageIndex, int pageSize){



this.pageIndex = pageIndex <= 0 ? 1 : pageIndex;



this.pageSize = pageSize <= 0 ? 10 : pageSize;



}



 



public int getPageIndex() {



return pageIndex;



}



 



public void setPageIndex(int pageIndex) {



this.pageIndex = pageIndex;



}



 



public int getPageSize() {



return pageSize;



}



 



public void setPageSize(int pageSize) {



this.pageSize = pageSize;



}



 



public int getTotalCount() {



return totalCount;



}



 



public void setTotalCount(int totalCount) {



this.totalCount = totalCount;



}



 



public List<T> getPageData() {



return pageData;



}



 



public void setPageData(List<T> pageData) {



this.pageData = pageData;



}



 



public int getStartRow() {



startRow = (pageIndex-1) * pageSize;



return startRow;



}



 



public int getTotalPage() {



totalPage = (int) Math.ceil(totalCount/Double.parseDouble(String.valueOf(pageSize)));



return totalPage;



}



 



 



}



 



//    ————controller



 @RequestMapping(value = {"/order/list"})



//page   



//model       



public ModelAndView get_orders(Integer page,B2cOrderModel model){



        ModelAndView mv = new ModelAndView();



        mv.setViewName("/order_list");



        



//       :   ,    ,    



        Page<B2cOrderModel> pageData = orderService.getOrders(getPageIndex(page), ConstantUtil.Page.PAGE_NUM, model);



       



        mv.addObject("pageData", pageData.getPageData());//  



        mv.addObject("totalCount", pageData.getTotalCount());//   



        mv.addObject("totalPage", pageData.getTotalPage());//   



        mv.addObject("currentPage", page);//   



        mv.addObject("pageNav", PageNavUtil.getBluePageNavHtml(getPageIndex(page),



ConstantUtil.Page.PAGE_NUM, pageData.getTotalCount(), ConstantUtil.Page.NAV_NUM));//    



        return mv;



}



 



//    ————service



@Override



    public Page<B2cOrderModel> getOrders(Integer pageIndex, int pageNum, B2cOrderModel model)



    {



        Page<B2cOrderModel> page = new Page<B2cOrderModel>(pageIndex, pageNum); 



 



        //        



        CriteriaCondition condition = new CriteriaCondition();//        



        condition.setDistinct(false);



        condition.setStart(page.getStartRow());



        condition.setPageSize(pageNum);



        condition.setOrderByClause(" CREATED_DT DESC");



        



        condition.put("postName", model.getPostName());



        condition.put("postContactPhone", model.getPostContactPhone());



        



        //             



        int totalCount = b2cOrderSourceDao.countByCondition(condition.getCondition());



        List<B2cOrderModel> pageData = b2cOrderSourceDao.selectByCondition(condition);



        



        //      



        page.setTotalCount(totalCount);



        page.setPageData(pageData);



        



        //        



        return page;



}



 



 



//    ————mybatis  



 



    



<select id="countByCondition" parameterType="java.util.Map" resultType="java.lang.Integer">



select count(*) from  



<include refid="Base_Where_B2cOrder" />



</select>



 



    



<select id="selectByCondition" resultMap="Base_Result_B2cOrder" parameterType="com.core.common.CriteriaCondition">



select



<if test="distinct">



distinct



</if>



<include refid="Base_Column_B2cOrder" />



from b2c_order



<include refid="Base_Where_B2cOrder" />



<if test=" null!= orderByClause">



order by #{orderByClause}



</if>



<if test="null!=start and null!=pageSize">



limit #{start}, #{pageSize}



</if>



</select>



 



//     



<resultMap id="Base_Result_B2cOrder" type="com.source.model.B2cOrderModel">



        <result property="model   " column="        "/>



</resultMap>



 



//   



<sql id="Base_Column_B2cOrder">



                   



</sql>



//    



<sql id="Base_Where_B2cOrder">



    <trim prefix="where" prefixOverrides="and|or">



    	<if test="null!=condition">



        	<if test="null!=condition.      and ''!=condition.     "> 



        	and       = #{condition.     }



        	</if>



        	</if>



        </trim>



</sql>



 



//    ---        



CriteriaCondition



import java.util.HashMap;



/**



 *        



 */



public class CriteriaCondition



{



    /**



     *        



     */



    Map<String, Object> condition;



    



    /**



     *     



     */



    boolean distinct;



    



    /**



     *     



     */



    String orderByClause;



    



    /**



     *      



     */



    Integer start;



    



    /**



     *     



     */



    Integer pageSize;



    



    public CriteriaCondition()



    {



        super();



        condition = new HashMap<String, Object>();



    }



    



    public CriteriaCondition(String orderByClause, Integer start, Integer pageSize)



    {



        this.distinct = true;



        this.orderByClause = orderByClause;



        this.start = start;



        this.pageSize = pageSize;



        condition = new HashMap<String, Object>();



    }



    



    public CriteriaCondition(boolean distinct, String orderByClause, Integer start, Integer pageSize)



    {



        this.distinct = distinct;



        this.orderByClause = orderByClause;



        this.start = start;



        this.pageSize = pageSize;



        condition = new HashMap<String, Object>();



    }



    



    public CriteriaCondition put(String condition, Object value)



    {



        this.condition.put(condition, value);



        return (CriteriaCondition)this;



    }



    



    public Map<String, Object> getCondition()



    {



        return condition;



    }



    



    public void setDistinct(boolean distinct)



    {



        this.distinct = distinct;



    }



    



    public void setOrderByClause(String orderByClause)



    {



        this.orderByClause = orderByClause;



    }



    



    public void setStart(Integer start)



    {



        this.start = start;



    }



    



    public void setPageSize(Integer pageSize)



    {



        this.pageSize = pageSize;



    }



    



}



 



//        



public class PageNavUtil



{



    



    public static String getBluePageNavHtml(int currentPage, int pageSize, int totalRows, int showNums)



    {



        



        StringBuilder pageNavHtml = new StringBuilder();



        



        if (showNums < 1)



        {



            showNums = 5;



        }



        



        //      



        int totalPage = (int)Math.ceil(totalRows / Double.parseDouble(String.valueOf(pageSize)));



        



        //         



        int midNum = (int)Math.ceil(Double.parseDouble(String.valueOf(showNums)) / 2);



        



        int beginNum = currentPage <= midNum ? 1 : currentPage - midNum + 1;



        



        int endNum = beginNum + showNums - 1;



        



        if (endNum > totalPage)



        {



            endNum = totalPage;



        }



        



        //    1           



        if (totalPage > 1)



        {



            



            //        



            if (currentPage > 1)



            {



                pageNavHtml.append("<a href='?page=1'>   </a>");



                



            }



            



            //       



            if (currentPage > beginNum)



            {



                pageNavHtml.append("<a href='?page=" + (currentPage - 1) + "'> < </a>");



                



            }



            else



            {



                pageNavHtml.append("<a href='javascript:void(0)' class='disabled'> < </a>");



            }



            



            for (int i = beginNum; i <= endNum; i++)



            {



                if (i == currentPage)



                {



                    pageNavHtml.append("<a href='javascript:void(0)' class='this'>" + currentPage + "</a>");



                }



                else



                {



                    pageNavHtml.append("<a href='?page=" + i + "'>" + i + "</a>");



                    



                }



                



            }



            



            //       



            if (currentPage < endNum)



            {



                pageNavHtml.append("<a href='?page=" + (currentPage + 1) + "'> > </a>");



                



            }



            else



            {



                pageNavHtml.append("<a href='javascript:void(0)' class='disabled'> > </a>");



            }



            



            //        



            if (currentPage < totalPage)



            {



                pageNavHtml.append("<a href='?page=" + totalPage + "'>  </a>");



            }



            



        }



        



        return pageNavHtml.toString();



        



    }



    



    public static String getPageNavHtml(int currentPage, int pageSize, int totalRows, int showNums)



    {



        



        StringBuilder pageNavHtml = new StringBuilder();



        



        if (showNums < 1)



        {



            showNums = 5;



        }



        



        //      



        int totalPage = (int)Math.ceil(totalRows / Double.parseDouble(String.valueOf(pageSize)));



        



        //         



        int midNum = (int)Math.ceil(Double.parseDouble(String.valueOf(showNums)) / 2);



        



        int beginNum = currentPage <= midNum ? 1 : currentPage - midNum + 1;



        



        int endNum = beginNum + showNums - 1;



        



        if (endNum > totalPage)



        {



            endNum = totalPage;



        }



        



        //    1           



        if (totalPage > 1)



        {



            



            //        



            if (currentPage > 1)



            {



                pageNavHtml.append("<a href='?page=1'>   </a>");



                



            }



            



            //       



            if (currentPage > beginNum)



            {



                pageNavHtml.append("<a href='?page=" + (currentPage - 1) + "'> < </a>");



                



            }



            else



            {



                pageNavHtml.append("<span class='disabled'> < </span>");



            }



            



            for (int i = beginNum; i <= endNum; i++)



            {



                if (i == currentPage)



                {



                    pageNavHtml.append("<span class='current'>" + currentPage + "</span>");



                }



                else



                {



                    pageNavHtml.append("<a href='?page=" + i + "'>" + i + "</a>");



                    



                }



                



            }



            



            //       



            if (currentPage < endNum)



            {



                pageNavHtml.append("<a href='?page=" + (currentPage + 1) + "'> > </a>");



                



            }



            else



            {



                pageNavHtml.append("<span class='disabled'> > </span>");



            }



            



            //        



            if (currentPage < totalPage)



            {



                pageNavHtml.append("<a href='?page=" + totalPage + "'>  </a>");



            }



            



        }



        



        return pageNavHtml.toString();



        



    }



    



}