SpringMVC分頁(yè)查詢,從controller到mapper

1、controller

需要獲取當(dāng)前頁(yè)碼、頁(yè)面大小、其他查詢條件。

@RequestMapping(value="/getMortgageList", method = RequestMethod.POST)
public String getMortgageList(MortgageQueryReqDto queryDto, Model model, HttpServletRequest request){
        try {
            // 頁(yè)碼信息
            int currentPageNo = Integer.valueOf(request.getParameter("currentPageNo"));
            int pageSize = Integer.valueOf(request.getParameter("pageSize"));
            // 封裝請(qǐng)求參數(shù)(包含其他查詢條件)
            queryDto.setCurrentPageNo(currentPageNo);
            queryDto.setPageSize(pageSize);
            // 調(diào)用Dubbo接口
            Message<MortgageQueryResPageDto> message = mortgageInterface.queryMortgageList(queryDto);
            // 解析返回結(jié)果
            if (Messages.isSuccess(message)) {
                MortgageQueryResPageDto queryResPageDto = message.getData();
                model.addAttribute("mortgageList", queryResPageDto.getMortgageQueryResDtoList());
                model.addAttribute("currentPageNo", currentPageNo);
                model.addAttribute("totalPageCount", PublicUtils.getTotalPageCount(
                        queryResPageDto.getTotalCount(), pageSize));
                model.addAttribute("totalCount", queryResPageDto.getTotalCount());
                model.addAttribute("pageSize", pageSize);
            }
        } catch(Exception e){
            log.error(e);
        }
        return "/mortgage_list";
}

2、Interface/Service

規(guī)范寫(xiě)法是dubbo接口調(diào)用service方法。為簡(jiǎn)潔說(shuō)明,下面例子將service方法代碼邏輯合并到interface中。

public Message<MortgageQueryResPageDto> queryMortgageList(MortgageQueryReqDto mortgageQueryReqDto) {
        // ...省略異常處理, 省略返回失敗消息

        // 通過(guò)其他條件獲取查詢記錄總數(shù)目
        queryResPageDto.setTotalCount(mortgageInfoMapper.countMortgage(mortgageQueryReqDto.getStatus()));

        // 計(jì)算查詢起始記錄位置
        Integer startIndex = (mortgageQueryReqDto.getCurrentPageNo()-1) * mortgageQueryReqDto.getPageSize();
        
        // 查詢記錄列表
        List<MortgageInfo> mortgageList = mortgageInfoMapper.selectMortgageInfoPage(
                mortgageQueryReqDto.getStatus(), startIndex, mortgageQueryReqDto.getPageSize());
        
        // 將記錄列表轉(zhuǎn)為返回列表
        List<MortgageQueryResDto> mortgageQueryResList = Lists.transform(mortgageList, mortgageInfo -> {
            MortgageQueryResDto mortgageQueryResDto = new MortgageQueryResDto();
            BeanUtils.copyProperties(mortgageInfo, mortgageQueryResDto);
            // ...
            return mortgageQueryResDto;
        });
        queryResPageDto.setMortgageQueryResDtoList(mortgageQueryResList);
        return Messages.success(queryResPageDto);
 }

3、Mapper

Mapper接口方法

/**
  * <P>description: 按條件查詢數(shù)據(jù)總數(shù)</P>
  **/
Integer countMortgage(@Param("status") Integer status);

/**
  * <P>description: 按條件查詢分頁(yè)數(shù)據(jù)</P>
  **/
List<MortgageInfo> selectMortgageInfoPage(@Param("status") Integer status, 
                     @Param("startIndex") Integer startIndex, @Param("pageSize") Integer pageSize);

Mybatis文件

<!-- 按條件查詢數(shù)據(jù)總數(shù) -->
<select id="countMortgage" resultType="java.lang.Integer">
    select count(ID) from MORTGAGE_INFO
    <where>
      <if test="status != null" >
        AND `STATUS` = #{status,jdbcType=INTEGER}
      </if>
    </where>
</select>

<!-- 按條件查詢分頁(yè)數(shù)據(jù) -->
<select id="selectMortgageInfoPage" resultMap="BaseResultMap">
    select MORTGAGE_ID, DOCUMENT_NO, `TYPE`, STATUS, LOAN_APPLY_NO, CREDIT_APPLY_NO from ACCT_LOAN_MORTGAGE_INFO
    <where>
      <if test="status != null" >
        AND `STATUS` = #{status,jdbcType=INTEGER}
      </if>
    </where>
    limit #{startIndex, jdbcType=INTEGER}, #{pageSize, jdbcType=INTEGER}
</select>
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 通過(guò)之前的兩篇我們能在本地搭建單一和集群兩種方式的dubbo服務(wù),這篇我們來(lái)看 springmvc+spring+...
    安琪拉_4b7e閱讀 2,288評(píng)論 0 6
  • 1. 簡(jiǎn)介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存儲(chǔ)過(guò)程以及高級(jí)映射的優(yōu)秀的...
    笨鳥(niǎo)慢飛閱讀 6,229評(píng)論 0 4
  • Spring 技術(shù)筆記Day 1 預(yù)熱知識(shí)一、 基本術(shù)語(yǔ)Blob類型,二進(jìn)制對(duì)象Object Graph:對(duì)象圖...
    OchardBird閱讀 1,078評(píng)論 0 2
  • 起初并不敢去相信你離我那么近 直到看到你的名字就出現(xiàn)在我眼前 下意識(shí)的低頭 紅暈撲朔迷離著。 我可不可以認(rèn)為這就是...
    辣辣辣椒閱讀 150評(píng)論 0 1
  • 活著終有目的,因?yàn)槲覀兩一钪?個(gè)人的夢(mèng)想?yún)R聚成強(qiáng)大的中國(guó)夢(mèng),在心路的歷程中,我們的想法,與周遭的環(huán)境一起發(fā)生著...
    芯星閱讀 448評(píng)論 0 1

友情鏈接更多精彩內(nèi)容