java分頁查詢後臺實現
提到分頁大家定當很熟悉,最近遇到前端框架更換之前的分頁機制已不再適用,最終還是把上一個項目的分頁機制拿過來使用,特在此記錄一下,以免再次遇到此類情況!
後臺代碼實現
controller
@Controller
@RequestMapping("/activity")
public class ActivityController extends BaseController {
@Autowired
ActivityService activityService;
/**
* @Description: 活動管理數據分頁查詢
* @Author: Mr.Jkx
* @Date: 2019/4/25 11:52
* in:pageSize 每頁顯示記錄
* in: pageIndex 當前頁碼
*/
@RequestMapping("/selTActivityList")
@ResponseBody
public String selTActivityList(TActivity tActivity, HttpServletRequest request){
// 分頁參數封裝
paginationMap = getPaginationMap(request);
// 搜索數據條件
paginationMap.put("creater", tActivity.getCreater());
paginationMap.put("activityType", tActivity.getActivityType());
paginationMap.put("deptId", tActivity.getDeptId());
paginationMap.put("activityStatus", tActivity.getActivityStatus());
TActivity tActivitys = activityService.selTActivityList(paginationMap);
return JsonUtil.toJsonString(tActivitys);
}
}
service
@Override
public TActivity selTActivityList(Map<String, Object> paginationMap) {
TActivity tActivity = new TActivity();
// 分頁獲取總條數
int allCount = tActivityMapper.getAllCount(paginationMap);
//獲取分頁信息再賦值給參數
Map<String, Object> pageRec = tActivity.getPageRec(paginationMap);
paginationMap.putAll(pageRec);
// 分頁獲取數據
List<TActivity> tActivityList = tActivityMapper.selTActivityList(paginationMap);
// 組裝回執數據
tActivity.setData(tActivityList);
tActivity.setTotal(allCount);
tActivity.setMessage("活動管理數據分頁查詢");
tActivity.setPageStatus(0);
return tActivity;
}
mapper
int getAllCount(@Param("paginationMap") Map<String, Object> paginationMap);
List<TActivity> selTActivityList(@Param("paginationMap") Map<String, Object> paginationMap);
<!--查詢數據總條數-->
<select id="getAllCount" resultType="java.lang.Integer" parameterType="java.util.Map">
select count(1)
from t_activity a
left join t_dept d
on FIND_IN_SET(d.id ,a.dept_id)
left join t_user u
on d.creater = u.user_id
<where>
<include refid="SelectTActivity_sql"></include>
</where>
</select>
<!-- 分頁數據查詢 -->
<select id="selTActivityList" resultMap="BaseResultMap" parameterType="java.util.Map">
select
<include refid="selTActivityOfList"/>
from t_activity a
left join t_dept d
on FIND_IN_SET(d.id ,a.dept_id)
left join t_user u
on d.creater = u.user_id
<where>
<include refid="SelectTActivity_sql"></include>
</where>
limit #{paginationMap.firstRow}, #{paginationMap.pageSize}
</select>
工具類
公共引用類
public class BaseController {
/**
* 分頁全局變量
*/
public Map<String, Object> paginationMap = new HashMap<String,Object>();
/**
*
* @Title: getPaginationMap
* @Description: 分頁參數封裝
* @param req
* @return
* @author Zhangzheng
* createDate: 2015年6月10日 下午4:23:56
*/
public Map<String,Object> getPaginationMap(HttpServletRequest req){
// 每次訪問都清空全局變量
Map<String, Object> paginationMap2 = new HashMap<String,Object>();
String pageSizes = req.getParameter("pageSize");//獲取每頁顯示記錄
String pageIndexs =req.getParameter("pageIndex");//獲取當前頁
int pageSize=10;//初始化每頁顯示記錄
int pageIndex=1;//初始化當前頁
if(pageSizes!=null && !pageSizes.equals("")&&!pageSizes.equals("undefined")){
pageSize=Integer.parseInt(pageSizes);
}
if(pageIndexs!=null && !pageIndexs.equals("")&&!pageIndexs.equals("undefined")){
pageIndex=Integer.parseInt(pageIndexs);
}
paginationMap2.put("pageSize", pageSize);
paginationMap2.put("pageIndex", pageIndex);
return paginationMap2;
}
}
public class Page<T> {
private int page;
private int pageSize = 10;
private int total; // 調整前第幾頁/調整後總條數
private List<T> rows;
private int pageStatus; // 解析接口狀態
private String message; // 解析提示文本
private List<T> data; // 解析數據列表
private int pageIndex = 1;
public int getPage() {
return page;
}
public void setPage(int page) {
this.page = page;
}
public int getTotal() {
return total;
}
public void setTotal(int total) {
this.total = total;
}
public List<T> getRows() {
return rows;
}
public void setRows(List<T> rows) {
this.rows = rows;
}
public int getPageStatus() {
return pageStatus;
}
public void setPageStatus(int pageStatus) {
this.pageStatus = pageStatus;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public List<T> getData() {
return data;
}
public void setData(List<T> data) {
this.data = data;
}
/**
* @Title: getPageRec
* @Description: 獲取分頁信息
* @param @param paginationMap
* @param @return
* @return Map<String,Object>
* @throws
*/
public Map<String, Object> getPageRec(Map<String, Object> paginationMap){
Map<String, Object> map = new HashMap<String, Object>();
this.setPageSize(Integer.parseInt(paginationMap.get("pageSize")+""));
this.setPageIndex(Integer.parseInt(paginationMap.get("pageIndex")+""));
map.put("firstRow", this.getFirstRow());
map.put("endRow", this.getLastRow());
return map;
}
public int getFirstRow() {
return (pageIndex - 1) * pageSize;
}
public void setPageIndex(int pageIndex) {
this.pageIndex = pageIndex;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getPageSize() {
return pageSize;
}
public int getLastRow() {
return pageIndex * pageSize;
}
}