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>