Mybatis實現(xiàn)分頁查詢的詳細(xì)流程
一. 簡單分頁查詢——limit
使用select查詢時,如果結(jié)果集數(shù)據(jù)量較大,一個頁面難以處理,就會采用分頁查詢。
分頁查詢,就是從結(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. 基于注解的簡單分頁查詢
【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é)果封裝對象
*/
@AllArgsConstructor
@NoArgsConstructor
@Data
public class PageResult implements Serializable{
private Long total;//總記錄數(shù)
private List rows;//當(dāng)前頁結(jié)果
}2.【定義PageResult類——封裝查詢條件】
封裝查詢條件
請求參數(shù)包括頁碼、每頁顯示記錄數(shù)、查詢條件。
請求參數(shù)的json格式為:{currentPage:1,pageSize:10,queryString:''apesource''}
// 分頁請求。
@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映射文件】
<!--動態(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實現(xiàn)分頁查詢的文章就介紹到這了,更多相關(guān)Mybatis分頁查詢內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java?超詳細(xì)講解Spring?MVC異常處理機(jī)制
Spring?MVC中提供了一個通用的異常處理機(jī)制,它提供了一個成熟、簡潔并且清晰的異常處理方案。當(dāng)使用Spring?MVC開發(fā)Web應(yīng)用時,利用這套現(xiàn)成的機(jī)制進(jìn)行異常處理也更加自然并且高效2022-04-04
Java上傳文件進(jìn)度條的實現(xiàn)方法(附demo源碼下載)
這篇文章主要介紹了Java上傳文件進(jìn)度條的實現(xiàn)方法,可簡單實現(xiàn)顯示文件上傳比特數(shù)及進(jìn)度的功能,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下2015-12-12
Java基于正則表達(dá)式實現(xiàn)xml文件的解析功能詳解
這篇文章主要介紹了Java基于正則表達(dá)式實現(xiàn)xml文件的解析功能,結(jié)合實例形式分析了java使用正則表達(dá)式針對xml文件節(jié)點的相關(guān)操作技巧,需要的朋友可以參考下2017-08-08
Mybatis?大數(shù)據(jù)量批量寫優(yōu)化的案例詳解
這篇文章主要介紹了Mybatis?大數(shù)據(jù)量批量寫優(yōu)化的示例代碼,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-05-05
Mybatis Plus 大數(shù)據(jù)游標(biāo)分頁的實現(xiàn)
使用MyBatis Plus的游標(biāo)分頁,我們可以輕松應(yīng)對大數(shù)據(jù)量的場景,本文主要介紹了Mybatis Plus 大數(shù)據(jù)游標(biāo)分頁的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下2024-07-07
Java中文件創(chuàng)建于寫入內(nèi)容的常見方法
在日常開發(fā)中,肯定離不開要和文件打交道,今天就簡單羅列一下平時比較常用的創(chuàng)建文件并向文件中寫入數(shù)據(jù)的幾種方式,希望對大家有一定的幫助2023-10-10
ReentrantLock 非公平鎖實現(xiàn)原理詳解
這篇文章主要為大家介紹了ReentrantLock 非公平鎖實現(xiàn)原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12
SpringBoot+vue實現(xiàn)登錄圖片驗證碼功能
這篇文章主要給大家介紹一下如何SpringBoot+vue實現(xiàn)登錄圖片驗證碼功能,文中有詳細(xì)的代碼示例,具有一定的參考價值,需要的朋友可以參考下2023-07-07

