Mybatis實(shí)現(xiàn)分頁查詢的詳細(xì)流程
一. 簡(jiǎn)單分頁查詢——limit
使用select查詢時(shí),如果結(jié)果集數(shù)據(jù)量較大,一個(gè)頁面難以處理,就會(huì)采用分頁查詢。
分頁查詢,就是從結(jié)果集中拿出指定的第n頁到第m頁的數(shù)據(jù)來顯示。
// limit分頁公式
// currentPage:當(dāng)前頁
// pageSize:每頁記錄數(shù)
limit (currentPage-1) * pageSize,pageSize
// SQL語句 select * from student limit(currentPage-1)*pageSize,pageSize;
1. 基于注解的簡(jiǎn)單分頁查詢
【Mapper接口】
@select("select * from student limit #{pageBegin},#{pageSize}") List<Student> findByPage(@Param("pageBegin") Integer PageBegin,@Param("PageSize")Integer PageSize);
【Controller類·】
@GetMapping("/findByPage") public List<Student> findByPage(Integer page,Integer pageSize){ Integer pageBegin = (page-1) * pageSize; return StudentMapper.findByPage(pageBegin,pageSize); }
二.基于mapper.xml的復(fù)雜分頁
1. 【定義Page類——封裝分頁結(jié)果】
/** * 分頁結(jié)果封裝對(duì)象 */ @AllArgsConstructor @NoArgsConstructor @Data public class PageResult implements Serializable{ private Long total;//總記錄數(shù) private List rows;//當(dāng)前頁結(jié)果 }
2.【定義PageResult類——封裝查詢條件】
封裝查詢條件
請(qǐng)求參數(shù)包括頁碼、每頁顯示記錄數(shù)、查詢條件。
請(qǐng)求參數(shù)的json格式為:{currentPage:1,pageSize:10,queryString:''apesource''}
// 分頁請(qǐng)求。 @AllArgsConstructor @NoArgsConstructor @Data public class QueryPageBean implements Serializable{ private Integer currentPage;//當(dāng)前頁碼 private Integer pageSize;//每頁記錄數(shù) private String queryString;//查詢條件 public QueryPageBean(Integer currentPage, Integer pageSize) { this.currentPage = currentPage; this.pageSize = pageSize; } }
3.【Dao層】
/*** 持久層Dao接口 */ @Mapper public interface CheckGroupDao { public Page<CheckGroup> selectByCondition(String queryString); }
4.【xxxMapper.xml映射文件】
<!--動(dòng)態(tài)查詢:分頁查詢--> <select id="selectByCondition" parameterType="string" resultType="com.apesource.graduation_project.pojo.CheckGroup"> select * from t_checkgroup <if test="value != null and value.length > 0"> where code = #{value} or name = #{value} or helpCode = #{value} </if> </select>
5.【Service層】
@Override public PageResult pageQuery(Integer currentPage, Integer pageSize, String queryString) { PageHelper.startPage(currentPage, pageSize); Page<CheckGroup> page = checkGroupDao.selectByCondition(queryString); return new PageResult(page.getTotal(), page.getResult()); }
6. 【Controller層】
//分頁查詢 @PostMapping("/findPage") public PageResult findPage(@RequestBody QueryPageBean queryPageBean) { try { PageResult pageResult = checkGroupService.pageQuery(queryPageBean.getCurrentPage(),queryPageBean.getPageSize(),queryPageBean.getQueryString()); return pageResult; } catch (Exception e) { return null; } }
總結(jié)
到此這篇關(guān)于Mybatis實(shí)現(xiàn)分頁查詢的文章就介紹到這了,更多相關(guān)Mybatis分頁查詢內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java?超詳細(xì)講解Spring?MVC異常處理機(jī)制
Spring?MVC中提供了一個(gè)通用的異常處理機(jī)制,它提供了一個(gè)成熟、簡(jiǎn)潔并且清晰的異常處理方案。當(dāng)使用Spring?MVC開發(fā)Web應(yīng)用時(shí),利用這套現(xiàn)成的機(jī)制進(jìn)行異常處理也更加自然并且高效2022-04-04Java上傳文件進(jìn)度條的實(shí)現(xiàn)方法(附demo源碼下載)
這篇文章主要介紹了Java上傳文件進(jìn)度條的實(shí)現(xiàn)方法,可簡(jiǎn)單實(shí)現(xiàn)顯示文件上傳比特?cái)?shù)及進(jìn)度的功能,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下2015-12-12Java基于正則表達(dá)式實(shí)現(xiàn)xml文件的解析功能詳解
這篇文章主要介紹了Java基于正則表達(dá)式實(shí)現(xiàn)xml文件的解析功能,結(jié)合實(shí)例形式分析了java使用正則表達(dá)式針對(duì)xml文件節(jié)點(diǎn)的相關(guān)操作技巧,需要的朋友可以參考下2017-08-08Mybatis?大數(shù)據(jù)量批量寫優(yōu)化的案例詳解
這篇文章主要介紹了Mybatis?大數(shù)據(jù)量批量寫優(yōu)化的示例代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-05-05Mybatis Plus 大數(shù)據(jù)游標(biāo)分頁的實(shí)現(xiàn)
使用MyBatis Plus的游標(biāo)分頁,我們可以輕松應(yīng)對(duì)大數(shù)據(jù)量的場(chǎng)景,本文主要介紹了Mybatis Plus 大數(shù)據(jù)游標(biāo)分頁的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2024-07-07Java中文件創(chuàng)建于寫入內(nèi)容的常見方法
在日常開發(fā)中,肯定離不開要和文件打交道,今天就簡(jiǎn)單羅列一下平時(shí)比較常用的創(chuàng)建文件并向文件中寫入數(shù)據(jù)的幾種方式,希望對(duì)大家有一定的幫助2023-10-10ReentrantLock 非公平鎖實(shí)現(xiàn)原理詳解
這篇文章主要為大家介紹了ReentrantLock 非公平鎖實(shí)現(xiàn)原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12SpringBoot+vue實(shí)現(xiàn)登錄圖片驗(yàn)證碼功能
這篇文章主要給大家介紹一下如何SpringBoot+vue實(shí)現(xiàn)登錄圖片驗(yàn)證碼功能,文中有詳細(xì)的代碼示例,具有一定的參考價(jià)值,需要的朋友可以參考下2023-07-07