中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mybatis-plus分頁查詢的3種方法

發布時間:2023-07-24 09:46:40 來源:億速云 閱讀:211 作者:栢白 欄目:開發技術

今天小編給大家分享的是mybatis-plus分頁查詢的3種方法,相信很多人都不太了解,為了讓大家更加了解,所以給大家總結了以下內容,一起往下看吧。一定會有所收獲的哦。

一、前期準備表

CREATE TABLE `school_student` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `sex` varchar(255) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;
INSERT INTO `avlicy`.`school_student`(`id`, `name`, `sex`, `age`) VALUES (1, 'av峰峰', '男', 1);
INSERT INTO `avlicy`.`school_student`(`id`, `name`, `sex`, `age`) VALUES (2, '盧本偉', '男', 12);
INSERT INTO `avlicy`.`school_student`(`id`, `name`, `sex`, `age`) VALUES (3, '小米粥', '女', 13);
INSERT INTO `avlicy`.`school_student`(`id`, `name`, `sex`, `age`) VALUES (4, '黃米粥', '女', 15);
INSERT INTO `avlicy`.`school_student`(`id`, `name`, `sex`, `age`) VALUES (5, '藍米粥', '女', 11);
INSERT INTO `avlicy`.`school_student`(`id`, `name`, `sex`, `age`) VALUES (6, '白米粥', '女', 17);
INSERT INTO `avlicy`.`school_student`(`id`, `name`, `sex`, `age`) VALUES (7, '紅米粥', '女', 15);
INSERT INTO `avlicy`.`school_student`(`id`, `name`, `sex`, `age`) VALUES (8, '橙米粥', '女', 16);
INSERT INTO `avlicy`.`school_student`(`id`, `name`, `sex`, `age`) VALUES (9, '青米粥', '女', 13);
INSERT INTO `avlicy`.`school_student`(`id`, `name`, `sex`, `age`) VALUES (10, '紫米粥', '女', 12);

1、配置類

@Configuration
//@MapperScan("com.example.demo.mapper")
public class MybatisPlusConfig {
    /**
     * 新增分頁攔截器,并設置數據庫類型為mysql
     * @return
     */
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }
}

二、使用selectPage

1、Service

        //分頁參數
        Page<SchoolStudent> rowPage = new Page(page, pageSize);
        //queryWrapper組裝查詢where條件
        LambdaQueryWrapper<SchoolStudent> queryWrapper = new LambdaQueryWrapper<>();
        rowPage = this.baseMapper.selectPage(rowPage, queryWrapper);
        return rowPage;

2、結果

mybatis-plus分頁查詢的3種方法

mybatis-plus分頁查詢的3種方法

三、使用2種分頁查詢的寫法

1、xml

    <select id="getPageStudentTwo" resultType="com.example.demo.entity.base.SchoolStudent">
        select * from school_student
    </select>

2、Mapper

說明:

  • 1、mybatis-plus中分頁接口需要包含一個IPage類型的參數。

  • 2、多個實體參數,需要添加@Param參數注解,方便在xml中配置sql時獲取參數值。 注意這里我雖然加了@Param但是我并沒有使用

Page<SchoolStudent> getPageStudentTwo(Page<SchoolStudent> rowPage,@Param("schoolStudent") SchoolStudent schoolStudent);

3、第一種寫法

    @Override
    public IPage<SchoolStudent> getPageStudentTwo(Integer current, Integer size) {
        Page<SchoolStudent> rowPage = new Page(current, size);
        SchoolStudent schoolStudent = new SchoolStudent();
        rowPage = this.baseMapper.getPageStudentTwo(rowPage, schoolStudent);
        return rowPage;
    }

4、第一種結果

mybatis-plus分頁查詢的3種方法

5、第二種寫法

    @Override
    public IPage<SchoolStudent> getPageStudentThree(Integer current, Integer size) {
        SchoolStudent schoolStudent = new SchoolStudent();
        Page pageStudentTwo = this.baseMapper.getPageStudentTwo(new Page(current, size), schoolStudent);
        return pageStudentTwo;
    }

6、第二種結果

mybatis-plus分頁查詢的3種方法

四、使用PageHelper插件分頁查詢

1、依賴

        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.4.5</version>
        </dependency>

2、代碼

    @Override
    public PageInfo<SchoolStudent> getPageStudentFour(Integer current, Integer size) {
        //獲取第1頁,10條內容,默認查詢總數count
        PageHelper.startPage(current, size);
        List<SchoolStudent> list = this.list();
        //用PageInfo對結果進行包裝
        PageInfo page = new PageInfo(list);
        return page;
    }

3、結果

這是控制臺打印的查詢語句,大家發現最后的LIMIT 函數沒,正常來說mybatis-plus里是沒有寫的,是pagehelper加上去。我頓時覺得,對于一個初級程序員的我來說,還有好多要學的。

PageHelper.startPage(pageNum, pageSize)這個地方設置的兩個值,pagehelper會在你執行查詢語句的時候幫你加上去,也就是LIMIT 的兩個參數,第一個參數是LIMIT 的起始下標,pagehelper會根據pageNum和pageSize自動給你算出;第二個參數是LIMIT的 數據量,也就是pageSize。而且我發現,pagehelper會執行兩遍你寫的查詢語句,第一遍會進行count(0),查出總條數,第二遍就會利用你設置的參數幫你分頁查詢出pageSize條數據。

我之前想先進行樹排序后再進行分頁的想法,在使用pagehelper時是行不通的,因為會影響pagehelper的自動分頁。因此我得出在進行pagehelper分頁的時候不可以給查詢出的數據進行其他排序操作(查詢語句中寫order by是可以的),這可能就是pagehelper的局限之處,不過我相信應該有解決辦法,等我找到了再分享出來。

mybatis-plus分頁查詢的3種方法

關于mybatis-plus分頁查詢的3種方法就分享到這里了,希望以上內容可以對大家有一定的參考價值,可以學以致用。如果喜歡本篇文章,不妨把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

商城县| 宣恩县| 静宁县| 双城市| 梧州市| 揭西县| 肇州县| 库车县| 兴城市| 盐亭县| 东港市| 百色市| 开鲁县| 奉新县| 灵山县| 青海省| 平罗县| 藁城市| 江都市| 桃源县| 陆良县| 北碚区| 越西县| 南宁市| 瑞金市| 安庆市| 忻州市| 绥芬河市| 福州市| 龙州县| 太湖县| 桐乡市| 游戏| 白河县| 漯河市| 克什克腾旗| 施甸县| 承德市| 怀集县| 佛学| 巨野县|