分頁查詢demo

dalgen tables代碼片段

	<!-- 查詢商品數量 -->
	<operation name="selectOrderCount" resultClass="int">
		<extraparams>
			<param name="startTime" javatype="java.util.Date" />
			<param name="endTime" javatype="java.util.Date" />
			<param name="orderId" javatype="java.lang.String" />
			<param name="cell" javatype="java.lang.String" />
			<param name="rcell" javatype="java.lang.String" />
			<param name="payStatus" javatype="java.lang.String" />
			<param name="orderStatus" javatype="java.lang.String" />
			<param name="orderPerson" javatype="java.lang.String" />
			<param name="payType" javatype="java.lang.String" />
		</extraparams>
		<sql>
			select count(DISTINCT ORDER_ID) from jiume_order
		</sql>
		<sqlmap>
		<![CDATA[
		   select count(DISTINCT ORDER_ID) from jiume_order
		   <dynamic prepend="where">
                <isNotEmpty property="startTime" prepend="and">
	            ${cdata-start}
	            	 GMT_MODIFIED >#startTime# 
	            ${cdata-end}  
	        </isNotEmpty>
	        <isNotEmpty property="endTime" prepend="and">
	             ${cdata-start}
	            	 GMT_MODIFIED <=#endTime#   
	             ${cdata-end}
	        </isNotEmpty>
                <isNotEmpty property="orderId" prepend="and">
                    ORDER_ID = #orderId#
                </isNotEmpty>
                <isNotEmpty property="cell" prepend="and">
                    CELL = #cell#
                </isNotEmpty>
                <isNotEmpty property="rcell" prepend="and">
                    R_CELL = #rcell#
                </isNotEmpty>
			    <isNotEmpty property="payStatus" prepend="and">
                    PAY_STATUS = #payStatus#
                </isNotEmpty>
                <isNotEmpty property="orderStatus" prepend="and">
                    ORDER_STATUS = #orderStatus#
                </isNotEmpty>
                <isNotEmpty property="orderPerson" prepend="and">
                    ORDER_PERSON = #orderPerson#
                </isNotEmpty>
                <isNotEmpty property="payType" prepend="and">
                    PAY_TYPE = #payType#
                </isNotEmpty>
            </dynamic>
           ]]>
		</sqlmap>
	</operation>

controller代碼片段

	/**
	 * 訂單訊息查詢
	 * 
	 * @param request
	 * @param modelMap
	 * @return
	 */
	@RequestMapping("/orderMng.html")
	public String orderMng(HttpServletRequest request, ModelMap modelMap) {
		System.out.println("-----------進入訂單管理頁面-----------");

		String start1 = request.getParameter("startTime");// 開始時間
		String end1 = request.getParameter("endTime");// 結束時間
		String orderId = request.getParameter("orderId");// 訂單號
		String cell = request.getParameter("cell");// 發貨人電話
		String rcell = request.getParameter("rCell");// 收貨人電話
		String payStatus = request.getParameter("payStatus");// 支付狀態
		String orderStatus = request.getParameter("orderStatus");// 發貨狀態
		String orderPerson = request.getParameter("orderPerson");// 訂購人姓名
		String payType = request.getParameter("payType");// 支付方式
		Date startTime = null;
		Date endTime = null;
		if (StringUtils.isNotBlank(start1)) {
			try {
				startTime = DateUtils.parseDate(start1, DateUtils.webFormat);
			} catch (ParseException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		if (StringUtils.isNotBlank(end1)) {
			try {
				endTime = DateUtils.parseDate(end1, DateUtils.webFormat);
			} catch (ParseException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		int totalItems = orderDAO.selectOrderCount(startTime, endTime, orderId, cell, rcell, payStatus, orderStatus, orderPerson, payType);
		Map<String, Integer> pageData = getPageData(request);
		List<OrderDO> orderList = orderDAO.selectAllOrder(startTime, endTime, orderId, cell, rcell, payStatus, orderStatus, orderPerson, payType, pageData.get(OFFSET), pageData.get(PAGE_SIZE_STR));
		List<OrderDO> list = new ArrayList<OrderDO>();
		String orderIds = null;
		for (int i = 0; i < orderList.size(); i++) {
			if (!StringUtils.equals(orderList.get(i).getOrderId(), orderIds)) {
				list.add(orderList.get(i));
			}
			;
			orderIds = orderList.get(i).getOrderId();
		}

		modelMap.put("orderList", orderList);
		modelMap.put("list", list);
		modelMap.put("startTime", start1);
		modelMap.put("endTime", end1);
		modelMap.put("orderId", orderId);
		modelMap.put("cell", cell);
		modelMap.put("rCell", rcell);
		modelMap.put("payStatus", payStatus);
		modelMap.put("orderStatus", orderStatus);
		modelMap.put("orderPerson", orderPerson);
		modelMap.put("payType", payType);
		modelMap.put("totalPages",
				calculatePage(totalItems, pageData.get(PAGE_SIZE_STR)));
		modelMap.put(CURRENTPAGE, pageData.get(CURRENTPAGE));
		modelMap.put("totalItems", totalItems);
		request.setAttribute("page", modelMap);
		return "html/orderMng";
	}

AbstractController代碼片段

/**
 * onway.com Inc.
 * Copyright (c) 2016-2016 All Rights Reserved.
 */
package com.onway.web.controller;

import java.io.File;
import java.text.DecimalFormat;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Pattern;

import javax.annotation.Resource;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import javax.servlet.http.HttpServletRequest;

import org.apache.log4j.Logger;
import org.springframework.web.multipart.MultipartFile;

import com.onway.common.lang.ArrayUtils;
import com.onway.common.lang.NumberUtils;
import com.onway.common.lang.StringUtils;
import com.onway.jiume.common.dal.daointerface.AddrtypeDAO;
import com.onway.jiume.common.dal.daointerface.AllParameterDAO;
import com.onway.jiume.common.dal.daointerface.CartDAO;
import com.onway.jiume.common.dal.daointerface.OrderDAO;
import com.onway.jiume.common.dal.daointerface.PetDAO;
import com.onway.jiume.common.dal.daointerface.PetTagDAO;
import com.onway.jiume.common.dal.daointerface.PettypeDAO;
import com.onway.jiume.common.dal.daointerface.ProductDAO;
import com.onway.jiume.common.dal.daointerface.ProductParameterDAO;
import com.onway.jiume.common.dal.daointerface.ProductSaleDAO;
import com.onway.jiume.common.dal.daointerface.ProductTypeDAO;
import com.onway.jiume.common.dal.daointerface.PublishDAO;
import com.onway.jiume.common.dal.daointerface.RecordDAO;
import com.onway.jiume.common.dal.daointerface.SigninDAO;
import com.onway.jiume.common.dal.daointerface.UserDAO;
import com.onway.jiume.common.service.exception.ErrorException;
import com.onway.jiume.common.util.FileUtils;
import com.onway.jiume.common.util.ImageUploadUtil;
import com.onway.jiume.core.cache.SysConfigCacheManager;
import com.onway.jiume.core.cache.code.CodeGenerateComponent;
import com.onway.jiume.core.exception.ParamErrorException;
import com.onway.platform.common.configration.ConfigrationFactory;
import com.onway.web.controller.template.ControllerTemplate;

/**
 * 控制器基類
 * 
 * @author guangdong.li
 * @version $Id: AbstractController.java, v 0.1 17 Feb 2016 11:18:55 guangdong.li Exp $
 */
public class AbstractController {
    /**  */
    private static final Pattern   SPLIT_PATTERN = Pattern.compile("_");

    /** logger */
    public static final Logger    logger        = Logger.getLogger(AbstractController.class);
    
    protected static final String EXCEPTION_MESSAGE = "服務異常,請稍後嘗試";
    
    protected static String       PAGE_NUM_STR      = "pageNum";

    protected static String       PAGE_SIZE_STR     = "pageSize";

    protected static int          DEFAULT_PAGE_SIZE = 10;

    protected static int          DEFAULT_PAGE_NUM  = 1;

    protected static final String CURRENTPAGE       = "currentPage";

    protected static final String OFFSET            = "offset";

    protected static final String LIMIT             = "limit";

    protected static final String PAGE_FLAG         = "page";
    
    protected static final String ADVANCE_LEVEL         = "進階款";
    
    protected static final String NOMAL_LEVEL         = "普通款";
    

    protected static final String   TOKEN_ERROR                  = "token不正確";

    protected static final String   USER_ID                      = "userId";

    protected static final String   TOKEN                        = "token";

    protected static final String   APP_TYPE                     = "appType";

    protected static final String   VERSION                      = "version";

    protected static final String   SIGN_T                       = "sign_t";

    protected static final String   SIGN                         = "sign";

    protected static final String   PAGE_NUM                     = "pageNum";

    protected static final String   TIME                         = "stime";

    protected static final String   CHECK_CODE                   = "checkCode";

    protected static final String   SIGN_SEED                    = "onway888888";

    protected static final String   PROD_CODE                    = "prodCode";

    protected static final int      PAGE_NUM_DIGIT               = 1;

    protected static final int      PAGE_SIZE_DIGIT              = 10;

    protected static final String   TRANSCODING_ERROR            = "編碼方式轉型異常";

    protected static final String   UPLOAD_SUCCESS               = "上傳成功";

    protected static final String   UPLOAD_ERROR                 = "上傳異常";

    protected DecimalFormat         dfZero                       = new DecimalFormat("0");

    protected DecimalFormat         dfDigit                      = new DecimalFormat("0.00");

    private static final String PAGE_NO                          = "pageNo";

    private static final String PAGE_SIZE                        = "pageSize";
    
    private static final String IMAGE_FILE           = ConfigrationFactory.getConfigration().getPropertyValue("jiume_post_upload_image");

    private static final String IMAGE_PATH           = ConfigrationFactory.getConfigration().getPropertyValue("jiume_post_image");


    /****************************所有的Client********************************/
    
//    @Resource
//    protected AccountInfoQueryServiceClient   accountInfoQueryServiceClient;
    
    
    /****************************所有的Component(組成)********************************/
    @Resource
    protected ControllerTemplate      controllerTemplate;

    @Resource
    protected CodeGenerateComponent   codeGenerateComponent;

    @Resource
    protected SysConfigCacheManager   sysConfigCacheManager;
    
    /****************************所有的DAO********************************/
    
    @Resource
    protected UserDAO userDAO;
    
    @Resource
    protected PetDAO   petDAO;
    
    @Resource
    protected ProductDAO   productDAO;
    
    @Resource
    protected ProductParameterDAO productParameterDAO;
    
    @Resource
    protected OrderDAO orderDAO;
    
    @Resource
    protected ProductTypeDAO productTypeDAO;
    
    @Resource
    protected AllParameterDAO allParameterDAO;
    
    @Resource
    protected CartDAO cartDAO;
    
    @Resource
    protected PetTagDAO petTagDAO;
    
    @Resource
    protected SigninDAO	signinDAO;
    
    @Resource
    protected AddrtypeDAO addrtypeDAO;
    
    @Resource
    protected PettypeDAO pettypeDAO;
    
    @Resource
    protected RecordDAO recordDAO;
    
    @Resource
    protected ProductSaleDAO productSaleDAO;
    
    @Resource
    protected PublishDAO publishDAO;
    
//    @Resource
//    protected SmsSender SmsSender;
    /**
     * 獲取頁碼
     * @param request
     * @return
     */
    public int adjustPageNo(HttpServletRequest request){
        String pageNo = request.getParameter(PAGE_NO);
        if(pageNo == null || !NumberUtils.isDigits(pageNo))
            return PAGE_NUM_DIGIT;
        return Integer.parseInt(pageNo) < 1 ? PAGE_NUM_DIGIT : Integer.parseInt(pageNo);
    }

    /**
     * 獲取每頁顯示條數
     * @param request
     * @return
     */
    public int adjustPageSize(HttpServletRequest request){
        String pageSize = request.getParameter(PAGE_SIZE);
        if(pageSize == null || !NumberUtils.isDigits(pageSize))
            return PAGE_SIZE_DIGIT;
        return Integer.parseInt(pageSize) < 1 ? PAGE_SIZE_DIGIT : Integer.parseInt(pageSize);
    }

    /**
     * 轉換Double
     * @param d
     * @return
     */
    public Double adjustDouble(String d){
        if(d == null)
            return null;
        if(NumberUtils.isNumber(d)){
            return Double.valueOf(d);
        }
        return null;
    }

    /**
     * 獲取分頁數據
     * 
     * @param request
     */
    protected Map<String, Integer> getPageData(final HttpServletRequest request) {

        String page = request.getParameter(CURRENTPAGE);
        String pageSize = request.getParameter(PAGE_SIZE_STR);

        // 分頁頁數
        int pagesize = StringUtils.hasLength(pageSize) && StringUtils.isNumeric(pageSize) ? Integer
            .parseInt(pageSize) : DEFAULT_PAGE_SIZE;

        int currentPage = 1;
        int offset = 0;

        if (StringUtils.hasLength(page) && StringUtils.isNumeric(page)) {
            currentPage = Integer.parseInt(page);
            offset = (currentPage - 1) * pagesize;
        }

        Map<String, Integer> pageMap = new HashMap<String, Integer>();
        pageMap.put(PAGE_SIZE_STR, pagesize);
        pageMap.put(CURRENTPAGE, currentPage);
        pageMap.put(OFFSET, offset);
        pageMap.put(LIMIT, (currentPage) * pagesize);
        return pageMap;
    }

    /**
     * 計算頁數
     * 
     * @param totalItems
     * @return
     */
    protected int calculatePage(int totalItems, int pagesize) {
        int totalPages = 0;
        if (0 != totalItems && totalItems > pagesize) {
            totalPages = 0 == totalItems % pagesize ? totalItems / pagesize : totalItems / pagesize
                                                                              + 1;
        } else if (0 != totalItems && totalItems <= pagesize) {
            totalPages = 1;
        }
        return totalPages;
    }



    /**
     * 獲取客戶端訪問ip地址
     * @param request
     * @return
     */
    public String getIpAddr(HttpServletRequest request) {
        String ip = (String) request.getParameter("loginIP"); // 兼容PC端請求IP記錄
        if (StringUtils.isBlank(ip)) {
            ip = request.getHeader("X-Real-IP");
        }
        if (StringUtils.isBlank(ip)) {
            ip = request.getHeader("x-forwarded-for");
        }
        if (StringUtils.isBlank(ip) || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("Proxy-Client-IP");
        }
        if (StringUtils.isBlank(ip) || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("WL-Proxy-Client-IP");
        }
        if (StringUtils.isBlank(ip) || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getRemoteAddr();
        }
        return ip;
    }

    /**
     * 
     * @param request
     * @return
     */
    protected String getUserId(HttpServletRequest request) {
        String key = "AdD53fE9BCB5E6Db";
        String sign = request.getHeader("Sign");

        if (StringUtils.isEmpty(sign)) {
            sign = request.getParameter("Sign");
        }

        if (StringUtils.isEmpty(sign)) {
            return "";
        }

        //hellomyson_8201409090003422_1370****031_acabd0a7c1f943b5a5f1ec2b50b8adc9
        String text = decode(sign, key);
        String[] arrays = SPLIT_PATTERN.split(text, 4);

        if (arrays == null | arrays.length != 4) {
            return "";
        }

        String userId = arrays[1];

        if (StringUtils.isBlank(userId)) {
            return "";
        }
        return userId;
    }

    /**
     * AES解碼
     * 
     * @param sign 加密串
     * @param key 祕鑰
     * @return
     */
    public String decode(String sign, String key) {
        if (StringUtils.isEmpty(sign)) {
            return "";
        }
        try {
            SecretKeySpec keyspec = new SecretKeySpec(key.getBytes(), "AES");
            Cipher cipher = Cipher.getInstance("AES/ECB/NoPadding");
            cipher.init(Cipher.DECRYPT_MODE, keyspec);
            byte[] b = cipher.doFinal(org.apache.commons.codec.binary.Base64.decodeBase64(sign));
            return new String(b);
        } catch (Exception e) {
            logger.error("", e);
        }
        return "";
    }

    public String encode(String sign, String key) {
        if (StringUtils.isEmpty(sign)) {
            return "";
        }
        try {
            SecretKeySpec keyspec = new SecretKeySpec(key.getBytes(), "AES");
            Cipher cipher = Cipher.getInstance("AES/ECB/NoPadding");

            int blockSize = cipher.getBlockSize();
            byte[] dataBytes = sign.getBytes();
            int plaintextLength = dataBytes.length;
            if (plaintextLength % blockSize != 0) {
                plaintextLength = plaintextLength + (blockSize - (plaintextLength % blockSize));
            }
            byte[] plaintext = new byte[plaintextLength];
            System.arraycopy(dataBytes, 0, plaintext, 0, dataBytes.length);
            cipher.init(Cipher.ENCRYPT_MODE, keyspec);
            byte[] b = cipher.doFinal(plaintext);
            return org.apache.commons.codec.binary.Base64.encodeBase64String(b);
        } catch (Exception e) {
            logger.error("", e);
        }
        return "";
    }

    /**
     * 
     * 是否小於指定版本 (向後兼容)
     * @param currentVersion
     * @param oldVersion
     * @param platform
     * @return
     */
    public boolean isSupport(String currentVersion, String oldVersion) {
        try {
            return compareVersion(currentVersion, oldVersion) < 0;
        } catch (Exception e) {
            logger.error("APP版本向下兼容判斷", e);
        }
        return false;
    }

    /**
     * 比較版本高低,version1 < version2 返回-1 ,等於返回0,大於返回1
     * 
     * @param version1
     * @param version2
     * @return
     * @throws Exception
     */
    public static int compareVersion(String version1, String version2) {
        if (version1 == null || version2 == null) {
            throw new ParamErrorException("版本號格式錯誤");
        }
        String[] versionArray1 = version1.split("\\.");
        String[] versionArray2 = version2.split("\\.");
        int idx = 0;
        int minLength = Math.min(versionArray1.length, versionArray2.length);//取最小長度值  
        int diff = 0;
        while (idx < minLength
               && (diff = versionArray1[idx].length() - versionArray2[idx].length()) == 0//先比較長度  
               && (diff = versionArray1[idx].compareTo(versionArray2[idx])) == 0) {//再比較字符  
            ++idx;
        }
        //如果已經分出大小,則直接返回,如果未分出大小,則再比較位數,有子版本的爲大;  
        diff = (diff != 0) ? diff : versionArray1.length - versionArray2.length;
        return diff;
    }
    
    /**
     *  文件上傳(圖片上傳) 
     * @param txtFile
     * @param uploadRealpath
     * @param filePath
     * @return
     */
    public  String uploadImage(MultipartFile txtFile, String uploadRealpath, String baseUrl) {
        // 檢查照片是否存在
        if (txtFile.getOriginalFilename() == null || "".equals(txtFile.getOriginalFilename())) {
            throw new ErrorException("圖片後綴名爲空");
        }
        // 照片上傳
        File file = ImageUploadUtil.getFile(txtFile, uploadRealpath, "");

        // 獲取文件訪問地址
        String visitPath = uploadRealpath+file.getName();

        return visitPath;
    } 
    
    /*
     * 上傳圖片 
     */
     public void uploadFile(MultipartFile image, String absolutePath) throws Exception {

         File userAuthImage = new File(absolutePath);
         if (image == null || ArrayUtils.isEmpty(image.getBytes())) {
         }
         FileUtils.writeByteArrayToFile(userAuthImage, image.getBytes());
     }
     
     //檢查的同時獲取
     protected String getParameterCheck(final HttpServletRequest request,String key){
     	String Value = request.getParameter(key);
     	if(null==Value||Value.equals("")){
     		Value=null;
 		 }
     	return Value;
     }
    
}

page.html

<meta charset="UTF-8">
<table width="100%" border=0 align=center cellpadding=0 cellspacing=0 class="pageInfo" style="margin:5px 0;"s>
   <tr>
     <td align="right">
     
     	#if($page)
			#if($page.totalItems && $page.totalItems > 0)
				共 $page.totalItems 條,當前第 $!page.currentPage 頁,共 $!page.totalPages 頁  |  
			   #if($page.currentPage==1)
			               首頁   上一頁
			   #else
			      <a href ="javascript:gotoPage(1,'$!formName')">首頁</a>
			      #set($prePage=$page.currentPage - 1)
				  <a href = "javascript:gotoPage($prePage,'$!formName')">上一頁</a>
			   #end
			   
			   #if($page.currentPage==$page.totalPages)
			             下一頁  尾頁
			   #else
			     #set($nextPage=$page.currentPage + 1)
				 <a href = "javascript:gotoPage($nextPage,'$!formName')" >下一頁</a>
				 <a href ="javascript:gotoPage($page.totalPages,'$!formName')">尾頁</a>
			   #end
			   
			   轉到第 <select id ="gotoPage" name="gotoPage" οnchange="gotoPages('$!formName')" class="button button-tiny">
				 #foreach($velocityCount in [1..$page.totalPages] )
				   #if($page.currentPage == $velocityCount)
				     <option selected value='$velocityCount'>$velocityCount</option>
				   #else
				     <option value='$velocityCount'>$velocityCount</option> 
				   #end
				#end
		       </select> 頁
		    #end
		#end
	  </td>
   </tr>
 </table>





<script type="text/javascript">
	function gotoPage(pageNum,formName){
		formName = formName || 'mainForm';
		var frm = document.getElementById(formName);
		frm.currentPage.value = pageNum;
		frm.submit();
	}

	function gotoPages(formName){
	     var pages = document.getElementById("gotoPage").value;
		 if(pages < 0 || pages == "") pages = 0;
	
		 if(isNaN(pages)){
		    alert("請輸入數字!");
			document.getElementById("gotoPage").value="go";
			return false;
		 }
		 
		 document.getElementById("currentPage").value = pages;
		 var frm = document.getElementById(formName);
		 frm.submit();
	}
</script>

html裏引用page.html的代碼片段

					<div class="fn-mt7">#set ($formName = "formName")
						#parse('/html/page.html')</div>
					<div style="height: 200px;"></div>


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章