springboot--表格操作02
不建議使用mybatis自帶的分頁查詢,或pagehelper插件等,使用MySql查詢語句更方便快捷。
以上一篇表格操作為基礎,加入分頁操作,完善核心代碼。上篇詳情CRUD與文件導入導出。
流程
后端開發
1、定義分頁查詢統一返回的實體類,返回數據為列表,建議使用泛型。
(RespPageEntity.java)
-
-
public class RespPageEntity {
-
private List<?> data;
-
private Long total;
-
}
-
復制代碼
2、定義控制層方法,為避免空值,請求參數中給與默認值。
(UserController.java)
-
/**
-
* 根據頁碼和大小分頁查詢
-
* @param page 當前頁,默認為1
-
* @param size 當前每頁顯示行數,默認為5
-
* @return 頁信息的實體
-
*/
-
-
public RespPageEntity getAllUserByPage(
-
return userService.getAllUserByPage(page, size);
-
}
-
復制代碼
3、業務層方法,分為兩步,1獲取數據總量,2獲取查詢頁信息,因此要加上事務注解@Transactional。
(UserService.java)
-
-
public RespPageEntity getAllUserByPage(Integer page, Integer size) {
-
RespPageEntity pageEntity = new RespPageEntity();
-
// 默認從0開始
-
if (page != null && size != null) {
-
page = (page- 1)*size;
-
}
-
// 獲取當前也用戶信息
-
List<User> users = userMapper.getAllUserByPage(page, size);
-
pageEntity.setData(users);
-
// 獲取當前用戶總量
-
Long total = userMapper.getTotal();
-
pageEntity.setTotal(total);
-
return pageEntity;
-
}
-
復制代碼
4、映射文件中的sql語句。
(UserMapper.xml)
-
<select id="getAllUserByPage" resultMap="BaseResultMap">
-
select
-
*
-
FROM
-
userinfo
-
limit #{page}, #{size}
-
</select>
-
<select id="getTotal" resultType="java.lang.Long">
-
select count(*) from userinfo;
-
</select>
-
復制代碼
5、postman測試,如地址http://127.0.0.1:8081/user/page/返回默認值或http://127.0.0.1:8081/user/page/?page=1&size=5
前端完善
1、template臨時組件中加入分頁的div(User.vue)
-
<div style="display: flex;justify-content: center;margin-top: 10px">
-
<el-pagination
-
background
-
@ size-change="sizeChange"
-
@ current-change="currentChange"
-
:current-page="currentPage"
-
:page-size="pageSize"
-
layout="sizes, prev, pager, next, jumper, ->, total, slot"
-
:total="total">
-
</el-pagination>
-
</div>
-
復制代碼
2、初始值
-
pageSize:5,
-
currentPage:1,
-
total:0,
-
復制代碼
3、每頁顯示的數量和當前頁碼
-
sizeChange(size) {
-
this.pageSize=size;
-
this.initUser();
-
},
-
currentChange(page) {
-
this.currentPage=page;
-
this.initUser();
-
},
-
復制代碼
4、修改初始化頁面方法
-
initUser() {
-
this.getRequest("/user/page/?page="+this.currentPage+"&size="+this.pageSize).then(resp => {
-
if (resp) {
-
this.userinfo=resp.data;
-
this.total=resp.total;
-
}
-
})
-
}
-
復制代碼
運行后效果圖
轉載於:https://juejin.im/post/5cc5a1e5518825253f4a5a7d