layui分頁插件
引入相關的js和css
layui:css <link rel="stylesheet" th:href="@{layui/css/layui.css}">
layui:js <script th:src="@{layui/layui.js}"></script>
jquery <script th:src="@{js/jquery.min.js}"></script>
th:src="@{xxx}" 這個對應的文件路徑 當然采用cdn 直接導入鏈接也可以直接按照html格式去寫
CDN 方式
<!-- 引入 layui.css --> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/layui/2.6.5/css/layui.min.css"> <!-- 引入 layui.js -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/layui/2.6.5/layui.min.js">
<!-- 引入 jquery.js -->
<script src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
引入分頁插件
<script th:inline="JavaScript">
layui.use('laypage', function () {
var laypage = layui.laypage;
laypage.render({
elem: 'userpage', //任意一個div 的ID,但不用加 # 號 將分頁添加到該div下面
count: [[${session.gzcount}]], //數據總數,后台獲取
limit: 5, //每頁條數
curr: [[${session.pages}]], //當前頁數
layout: ['prev', 'page', 'next', 'skip'], //這里就是一些功能按鈕 詳情可以閱讀 layui的官方文檔
jump: function (obj, first) {
//這里是首次不執行,以為當我們異步請求后 需要重新加載該頁面獲取新的數據 如果直接寫在外面 會循環調用 導致頁面一直重復加載
if (!first) {
$.ajax({
type: "POST",
url: "/user/gzpages", //接口路徑
data: {"pages":obj.curr, //obj.curr得到當前頁,以便向服務端請求對應頁的數據。
"limit":obj.limit,//obj.limit得到每頁顯示的條數
},
success: function(data) {
location.reload() //重新加載頁面 當然這里可以進行判斷 如果后台數據沒有改動 可以不用重新加載
},
});
}
}
});
});
</script>
Controller
直接上代碼了,
@RequestMapping("/user/gomygz")
public String mygz(HttpServletRequest request,Model model){
String gzpages =(String) request.getSession().getAttribute("gzpages");
Map finduserfansmap = userService.finduserfansmap(request, gzpages);
/**這個是一個封裝參數的方法可以封裝到service中 也可以直接放在controller 當然最好封裝到Service中
public Map finduserfansmap(HttpServletRequest request, String pages){
String limit =(String) request.getSession().getAttribute("limit");
String pages=(String) request.getSession().getAttribute("pages");
Map map=new HashMap();
int pages1=1,limit1=5; //初始化參數 (當前頁 和每頁條數)
if (pages!=null&&limit!=null){ //第一次進入頁面 session pages limit 是空的 我們就直接用最初的值 當異步請求創建了session 后我們就用 session的值
pages1 = Integer.valueOf(pages);
limit1 = Integer.valueOf(limit);
}
map.put("start",pages1*limit1-limit1);
map.put("end",pages1*limit1);
return map;
}
**/
List<Fansmsg> relations = userService.findto_userid(finduserfansmap);
request.getSession().setAttribute("mygz",relations);
return "user/mygz";
}
//切換頁碼的請求
@RequestMapping("/user/gzpages")
@ResponseBody
public int gzpages(String pages,String limit,HttpServletRequest request){
//將參數封裝到session里面 每次請求都會更新session的值
request.getSession().setAttribute("pages",pages);
request.getSession().setAttribute("limit",limit);
return 1;
}
Mapper
就是一個簡單的SQL語句
<select id="xxx" parameterType="map" resultType="pojo"> select * from table where 查詢條件 limit #{start},#{end} </select>
這樣就可以實現了
當然用vue 可以雙向綁定 前后端分離 后端只負責提供各種json數據 前端用vue 遍歷數據 就比這簡單多了
