您好,登錄后才能下訂單哦!
這篇文章主要介紹“Springboot怎么實現(xiàn)展示分頁數(shù)據(jù)的功能”,在日常操作中,相信很多人在Springboot怎么實現(xiàn)展示分頁數(shù)據(jù)的功能問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Springboot怎么實現(xiàn)展示分頁數(shù)據(jù)的功能”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
設(shè)計目的就是為了加速開發(fā),減少xml的配置。如果你不想寫配置文件只需要在配置文件添加相對應(yīng)的配置就能快速的啟動的程序。
通用mapper只支持對單表的操作,對單表的增刪改查,無需在mapper.xml寫對應(yīng)的sql語句,只需要我們調(diào)用相應(yīng)的接口即可。
pagehelper主要是在對查詢的數(shù)據(jù)進行一個分頁查詢。
首先在maven項目,在pom.xml中引入mapper和pagehelper的依賴
<!-- pagehelp --> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.2.3</version> </dependency> <!-- 通用mapper --> <dependency> <groupId>tk.mybatis</groupId> <artifactId>mapper-spring-boot-starter</artifactId> <version>1.0.0</version> </dependency>
2 新建一個mymapper.java文件,繼承mapper接口
public interface MyMapper<T> extends Mapper<T>, MySqlMapper<T>,ConditionMapper<T> { //FIXME 特別注意,該接口不能被掃描到,否則會出錯 }
這個java文件不能和其它mapper放在一起,以免被掃描到。獲取單表數(shù)據(jù)的操作都直接調(diào)用這個方法。
3 在配置文件上添加以后屬性字段
#jdbc spring.datasource.url=jdbc:mysql://127.0.0.1:3306/news spring.datasource.username=數(shù)據(jù)庫用戶名 spring.datasource.password=數(shù)據(jù)庫密碼 spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.freemarker.request-context-attribute=request #mapper mapper.mappers=com.imooc.springboot.mapper.util.MyMapper mapper.not-empty=false mapper.identity=MYSQL #pagehelper pagehelper.helper-dialect = mysql pagehelper.reasonable = true pagehelper.support-methods-arguments = true pagehelper.params= count= countSql
上面的配置mapper.mappers 是第2步里面文件所在的路徑。
4 添加了controller文件之后,由controller里面的方法去調(diào)用server里面的方法。雖然是有通用mapper方法,但是每次添加一個server方法之后都要添加對應(yīng)的mapper方法,這樣開發(fā)的也顯得比較繁瑣,所以我們需要一個通用server類,用這個類去調(diào)用第二步的方法就可以了。
public interface BaseService<T> { /** * 查詢所有 * * @return 返回所有數(shù)據(jù) */ List<T> findAll(); /** * 添加 * * @param t 實體 * * @return */ int save(T t); /** * 修改 * * @param t * 實體 * @return */ int updateByPrimaryKey(T t); /** * 根據(jù)主鍵刪除 * * @param t 主鍵 * * @return */ int deleteByPrimaryKey(int t); /** * 查詢表格列表 * @param t 分頁參數(shù) * @return */ TableData<T> getTableData(PageBean pageBean); }
上面只是封裝基本增刪改查的方法,后續(xù)可自行添加方法。
然后添加實現(xiàn)類
public abstract class BaseServiceImpl<T> implements BaseService<T> { @Autowired protected MyMapper<T> mapper; @Override public List<T> findAll() { return mapper.selectAll(); } @Override public int save(T t) { return mapper.insert(t); } @Override public int updateByPrimaryKey(T t) { return mapper.updateByPrimaryKey(t); } @Override public int deleteByPrimaryKey(int t) { return mapper.deleteByPrimaryKey(t); } @Override public TableData<T> getTableData(PageBean bean) { int count = mapper.selectAll().size(); if (count > 0) { PageHelper.startPage((bean.getOffset()/bean.getLimit()) + 1, bean.getLimit()); List<T> list = this.findAll(); return TableData.bulid(count, list); } return TableData.empty(); } }
注意:我用的編輯器是eclipse,如果用idea編輯器,這里可把abstract去掉。
然后添加對應(yīng)的接口和實現(xiàn)類繼承上面的接口和方法就可以了,比如添加一個newsserver 接口和newsserverImpl類
public interface NewsService extends BaseService<SysUser> { }
@Service public class NewsServiceImpl extends BaseServiceImpl<SysUser> implements NewsService{ }
5 為了減少數(shù)據(jù)庫服務(wù)器的壓力,一般我們查詢數(shù)據(jù)的時候都會使用pagehelper進行分頁查詢,為了更加清晰的顯示我們展示的數(shù)據(jù),使用bootstrap table展示數(shù)據(jù),bootstrap table獲取數(shù)據(jù)有兩種途經(jīng),一種是客戶端模式,即獲取全部數(shù)據(jù)之后,在前端進行分頁展示。另外一種,也就是我們接下來要說的服務(wù)端模式:要獲取的數(shù)據(jù)信息,比如獲取數(shù)據(jù)頁碼,每一頁數(shù)據(jù)的大小,都可以通過前端發(fā)送以上的參數(shù)向后臺發(fā)請求,后臺得到這些參數(shù)信息之后返回數(shù)據(jù)。
6 引入bootstrap table相關(guān)的js css文件之后,開始在網(wǎng)上找了一些資料之后發(fā)現(xiàn)很多都是要在前端頁面添加如下繁瑣的配置,
$('#mytable').bootstrapTable({ //請求方法 method: 'get', //是否顯示行間隔色 striped: true, //是否使用緩存,默認為true,所以一般情況下需要設(shè)置一下這個屬性(*) cache: false, //是否顯示分頁(*) pagination: true, //是否啟用排序 sortable: false, //排序方式 sortOrder: "desc", //初始化加載第一頁,默認第一頁 //我設(shè)置了這一項,但是貌似沒起作用,而且我這默認是0,- - //pageNumber:1, //每頁的記錄行數(shù)(*) pageSize: 10, //可供選擇的每頁的行數(shù)(*) pageList: [10, 25, 50, 100], //這個接口需要處理bootstrap table傳遞的固定參數(shù),并返回特定格式的json數(shù)據(jù) url: "${contextPath}/mapper/getTableData", //默認值為 'limit',傳給服務(wù)端的參數(shù)為:limit, offset, search, sort, order Else //queryParamsType:'', ////查詢參數(shù),每次調(diào)用是會帶上這個參數(shù),可自定義 queryParams: queryParams : function(params) { var subcompany = $('#subcompany option:selected').val(); var name = $('#name').val(); return { pageNumber: params.offset+1, pageSize: params.limit, companyId:subcompany, name:name }; }, //分頁方式:client客戶端分頁,server服務(wù)端分頁(*) sidePagination: "server", //是否顯示搜索 search: false, //Enable the strict search. strictSearch: true, //Indicate which field is an identity field. idField : "id", columns: [], pagination:true });
每次添加一個頁面如果都要添加以上的配置信息也顯得繁瑣,不過bootstrap-table.js里面有個默認的配置,只需要修改里面的幾個配置。
contentType: 'application/json',//post請求頭 application/x-www-form-urlencoded; charset=UTF-8' dataType: 'json', sidePagination: 'server', // 改成server
當我們點擊表格分頁頁碼的時候,獲取改變每頁顯示的頁碼時候,前端會自動調(diào)用queryParams()方法,我們需要將這些數(shù)據(jù)傳遞給后臺,
function queryParams(params) { var query={}; query["limit"] = params.limit;//第幾條數(shù)據(jù)開始 query["offset"] = params.offset;//數(shù)據(jù)大小 return query; }
6 配合上一步前端的分頁,我們就需要使用pagehelp插件了,同樣我們把這個分頁的方法放在通用server類上,
public TableData<T> getTableData(PageBean bean) { int count = mapper.selectAll().size(); if (count > 0) { PageHelper.startPage((bean.getOffset()/bean.getLimit()) + 1, bean.getLimit()); List<T> list = this.findAll(); return TableData.bulid(count, list); } return TableData.empty(); }
上面的pagehelper.startpage需要做一點改變,前端傳過來的是顯示第幾條數(shù)據(jù),但是startpage方法第一個參數(shù)是顯示第幾頁的數(shù)據(jù),所以做一個轉(zhuǎn)換pageoffset/limit +1,然后在查詢數(shù)據(jù),需要注意的是,一定要將startpage方法方法查詢數(shù)據(jù)語句的前一行,不能空行,或者換行。
到此,關(guān)于“Springboot怎么實現(xiàn)展示分頁數(shù)據(jù)的功能”的學習就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。