MyBatis-Plus結(jié)合Layui實現(xiàn)分頁方法
MyBatis-Plus 使用簡單,內(nèi)置通用 Mapper、通用 Service,僅僅通過少量配置,即可實現(xiàn)單表大部分 CRUD 操作。下面介紹使用 service 中的 page 方法結(jié)合 Layui 前端框架,較快速的實現(xiàn)分頁效果。
在 pom.xml 中引入依賴
<!-- mybatisplus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatisplus.version}</version>
</dependency>
使用 MyBatis-Plus 內(nèi)置的 mapper。首先編寫好實體類,然后編寫 mapper 接口,并繼承 BaseMapper。BaseMapper 中包含大部分的 CRUD 方法,不需要編寫 mapper.xml 。如果需要多表查詢的話,可根據(jù)自己的業(yè)務(wù)需要編寫 mapper.xml 。
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.systop.pojo.School;
import org.springframework.stereotype.Repository;
/**
* @author: Miranda
* @Date: 2021/8/2
* @description:
*/
@Repository
public interface SchoolMapper extends BaseMapper<School> {
}
使用 MyBatis-Plus 內(nèi)置的 service。編寫 service 接口,并繼承 IService。
import com.baomidou.mybatisplus.extension.service.IService;
import com.systop.pojo.School;
/**
* @author: Miranda
* @Date: 2021/8/2
* @description:
*/
public interface SchoolService extends IService<School> {
}
編寫 service 實現(xiàn)類,繼承 MyBatis-Plus 的 ServiceImpl ,同時實現(xiàn) SchoolService 接口。
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.systop.mapper.SchoolMapper;
import com.systop.pojo.School;
import com.systop.service.SchoolService;
import org.springframework.stereotype.Service;
/**
* @author: Miranda
* @Date: 2021/8/2
* @description:
*/
@Service
public class SchoolServiceImpl extends ServiceImpl<SchoolMapper, School> implements SchoolService {
}
使用 MyBatis-plus 分頁,必須寫一個配置類
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* @author: Miranda
* @Date: 2021/8/3
* @description:
*/
@Configuration
@MapperScan("com.systop.mapper")
public class MybatisPlusConfig {
/**
* 分頁插件
*/
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
}
需要一個 Layui 返回值的類
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author: Miranda
* @Date: 2021/8/2
* @description:
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class LayuiPage<T> {
private int code;
private String msg;
private Long count;
private List<T> data;
/**
* 只有總條數(shù)和分頁數(shù)據(jù)的構(gòu)造方法
* @param count 總條數(shù)
* @param data 分頁數(shù)據(jù)
*/
public LayuiPage( Long count, List<T> data) {
this.count = count;
this.data = data;
}
}
controller 類
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.systop.pojo.School;
import com.systop.service.SchoolService;
import com.systop.utils.LayuiPage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* @author: Miranda
* @Date: 2021/8/2
* @description:
*/
@Controller
public class SchoolController {
@Autowired
private SchoolService schoolService;
@RequestMapping("schoolList")
@ResponseBody
public LayuiPage schoolList(int page,int limit){
//傳入分頁的屬性
Page<School> pager = new Page<>(page,limit);
//分頁查詢學校信息
IPage<School> schoolPage = schoolService.page(pager, new QueryWrapper<>());
// schoolPage.getTotal() 信息總條數(shù)
// schoolPage.getRecords() 分頁數(shù)據(jù)
return new LayuiPage(schoolPage.getTotal(),schoolPage.getRecords());
}
}
Layui 頁面代碼實現(xiàn)
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8">
<title>學校信息管理</title>
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
<!-- 引入layuiadmin的樣式 -->
<link rel="stylesheet" href="../layuiadmin/layui/css/layui.css" rel="external nofollow" th:href="@{layuiadmin/layui/css/layui.css}" rel="external nofollow" media="all">
<link rel="stylesheet" href="../layuiadmin/style/admin.css" rel="external nofollow" th:href="@{layuiadmin/style/admin.css}" rel="external nofollow" media="all">
</head>
<body>
<div class="layui-fluid">
<div class="layui-row layui-col-space15">
<div class="layui-col-md12">
<div class="layui-card">
<div class="layui-card-body">
<!-- id="test-table-simple" -->
<table class="layui-table" id="test-table-simple" lay-filter="curd" ></table>
</div>
</div>
</div>
</div>
</div>
<script src="../layuiadmin/layui/layui.js" th:src="@{layuiadmin/layui/layui.js}"></script>
<script>
layui.use(['layer', 'table', 'element','form', 'layedit','util'], function(){
var layer = layui.layer, //彈層
table = layui.table, //表格
element = layui.element, //元素操作
form = layui.form,
layedit = layui.layedit,
util = layui.util;
table.render({
elem: '#test-table-simple',
url: 'schoolList',
method: 'post',
cellMinWidth: 80, //全局定義常規(guī)單元格的最小寬度
cols: [
[{type: 'checkbox'},
{field: 'sid', title: 'ID', sort: true, align: 'center', width:80},
{field: 'sname', title: '名稱', align: 'center'},
{field: 'arrangement', title: '層次', align: 'center'},
{title: '操作', align: 'center', toolbar: '#bar', width:150, fixed: 'right'}]
],
// field 的值和實體類屬性名稱保持一致,如果數(shù)據(jù)表格沒有渲染,可以看看瀏覽器解析后的名稱
done: function(res){
// 在控制臺輸出后臺傳送的數(shù)據(jù)
console.log(res);
},
page: true, //是否顯示分頁
limits: [5, 7, 10],
limit: 5 //每頁默認顯示的數(shù)量
});
});
</script>
</body>
</html>
頁面效果如下:


排雷:
剛開始定義 Layui 返回數(shù)據(jù)類的時候,將 code 定義成 Integer 類型,并且在 controller 類中使用的是兩個參數(shù)的構(gòu)造方法,導(dǎo)致傳給前臺數(shù)據(jù)中 code 的值是 null,所以數(shù)據(jù)渲染一直報 “返回的數(shù)據(jù)狀態(tài)異?!?。
解決:
將 code 定義成 int 類型,或者在 controller 中使用時,傳四個參數(shù)。
到此這篇關(guān)于MyBatis-Plus結(jié)合Layui實現(xiàn)分頁方法的文章就介紹到這了,更多相關(guān)MyBatis-Plus Layui分頁內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- oracle+mybatis-plus+springboot實現(xiàn)分頁查詢的實例
- springboot整合mybatis-plus實現(xiàn)多表分頁查詢的示例代碼
- 解決Mybatis-Plus操作分頁后數(shù)據(jù)失效問題
- MyBatis-Plus分頁插件不生效的解決方法
- springboot整合mybatis-plus 實現(xiàn)分頁查詢功能
- mybatis-plus分頁查詢的實現(xiàn)示例
- Mybatis-Plus 多表聯(lián)查分頁的實現(xiàn)代碼
- MyBatis-Plus實現(xiàn)2種分頁方法(QueryWrapper查詢分頁和SQL查詢分頁)
相關(guān)文章
老生常談Java中List與ArrayList的區(qū)別
Javaweb動態(tài)開發(fā)最重要的Servlet詳解
java中LinkedList使用迭代器優(yōu)化移除批量元素原理
Springboot初始化啟動報錯Error?creating?bean?with?name?'da

