SpringBoot基礎(chǔ)系列-整合PageHelper分頁插件


原創(chuàng)文章,轉(zhuǎn)載請標(biāo)注出處:《SpringBoot基礎(chǔ)系列-整合PageHelper分頁插件》


步驟

第一步:首先整合MyBatis

參照之前SpringBoot基礎(chǔ)系列-整合MyBatis

第二步:添加必要的依賴

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>4.1.6</version>
</dependency>

第三步:添加必要的配置

第四步:添加必要的配置類

@Configuration
public class PageHelperConfig {
    @Bean
    public PageHelper pageHelper(){
        PageHelper pageHelper = new PageHelper();
        Properties properties = new Properties();
        properties.setProperty("offsetAsPageNum","true");
        properties.setProperty("rowBoundsWithCount","true");
        properties.setProperty("reasonable","true");
        properties.setProperty("dialect","mysql");    //配置mysql數(shù)據(jù)庫的方言
        pageHelper.setProperties(properties);
        return pageHelper;
    }
}

第五步:使用插件

  1. 定義mapper痹兜,延用之前的mapper
    BookRepository.xml
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.springbootdemo.mapper.BookRepository">
    
    <!--省略多余內(nèi)容-->
    
    <select id="getBooks" resultMap="bookResultMap">
        select * from BOOK WHERE 1=1
        <if test="bookId != null">
            and BOOK_ID = #{bookId}
        </if>
        <if test="pageNum != null">
            and PAGE_NUM = #{pageNum}
        </if>
        <if test="bookType != null">
            and BOOK_TYPE = #{bookType}
        </if>
        <if test="bookDesc != null">
            and BOOK_DESC = #{bookDesc}
        </if>
        <if test="bookPrice != null">
            and BOOK_PRICE = #{bookPrice}
        </if>
        <if test="bookName != null">
            and BOOK_NAME = #{bookName}
        </if>
    </select>
    <select id="count" resultType="int">
        select count(1) from BOOK WHERE 1=1
        <if test="bookId != null">
            and BOOK_ID = #{bookId}
        </if>
        <if test="pageNum != null">
            and PAGE_NUM = #{pageNum}
        </if>
        <if test="bookType != null">
            and BOOK_TYPE = #{bookType}
        </if>
        <if test="bookDesc != null">
            and BOOK_DESC = #{bookDesc}
        </if>
        <if test="bookPrice != null">
            and BOOK_PRICE = #{bookPrice}
        </if>
        <if test="bookName != null">
            and BOOK_NAME = #{bookName}
        </if>
    </select>
    <resultMap id="bookResultMap" type="Book">
        <id column="BOOK_ID" property="bookId"/>
        <result column="PAGE_NUM" property="pageNum"/>
        <result column="BOOK_NAME" property="bookName"/>
        <result column="BOOK_TYPE" property="bookType"/>
        <result column="BOOK_DESC" property="bookDesc"/>
        <result column="BOOK_PRICE" property="bookPrice"/>
        <result column="CREATE_TIME" property="createTime"/>
        <result column="MODIFY_TIME" property="modifyTime"/>
    </resultMap>
</mapper>

BookRepository.java

public interface BookRepository {
    
    //省略多余內(nèi)容
    
    List<Book> getBooks(Book book);
    int count(Book book);
}
  1. 定義service
@Service
@Log4j2
public class BookService {
    
    @Autowired
    private BookRepository bookRepository;
    
    // 省略多余內(nèi)容
    
    public ResponseEntity<PageInfo<Book>> getBooksByPageHelper(int pageId, int pageSize) {
        PageHelper.startPage(pageId, pageSize);
        List<Book> books = bookRepository.getBooks(Book.builder().build());
        int totalNum  = bookRepository.count(Book.builder().build());
        PageInfo<Book> page = new PageInfo<>();
        page.setPageNum(pageId);
        page.setPageSize(pageSize);
        page.setSize(totalNum);
        page.setList(books);
        return ResponseEntity.ok(page);
    }
}

此處使用PageHelper提供的PageInfo來承載分頁信息穆咐,你也可以自定義分頁模型來進(jìn)行承載,但一般情況下使用給定的完全能滿足要求字旭。

  1. 定義controller
@RestController
@RequestMapping("/book")
@Api(description = "書籍接口")
@Log4j2
public class BookApi {
    
    @Autowired
    private BookService bookService;
    
    // 省略多余內(nèi)容
    
    @RequestMapping(value = "/getBooksByPageHelper", method = RequestMethod.GET)
    @ApiOperation(value = "分頁獲取書籍", notes = "通過PageHelper分頁獲取書籍", httpMethod = "GET")
    public ResponseEntity<PageInfo<Book>> getBooksByPageHelper(final int pageId, final int pageNum){
        return bookService.getBooksByPageHelper(pageId, pageNum);
    }

}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末对湃,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子遗淳,更是在濱河造成了極大的恐慌拍柒,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件屈暗,死亡現(xiàn)場離奇詭異拆讯,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)养叛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進(jìn)店門种呐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人弃甥,你說我怎么就攤上這事爽室。” “怎么了潘飘?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵肮之,是天一觀的道長。 經(jīng)常有香客問我卜录,道長戈擒,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任艰毒,我火速辦了婚禮筐高,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己柑土,他們只是感情好蜀肘,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著稽屏,像睡著了一般扮宠。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上狐榔,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天坛增,我揣著相機(jī)與錄音,去河邊找鬼薄腻。 笑死收捣,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的庵楷。 我是一名探鬼主播罢艾,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼尽纽!你這毒婦竟也來了咐蚯?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤弄贿,失蹤者是張志新(化名)和其女友劉穎仓蛆,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體挎春,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年豆拨,在試婚紗的時候發(fā)現(xiàn)自己被綠了直奋。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡施禾,死狀恐怖脚线,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情弥搞,我是刑警寧澤邮绿,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站攀例,受9級特大地震影響船逮,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜粤铭,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一挖胃、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦酱鸭、人聲如沸吗垮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽烁登。三九已至,卻和暖如春蔚舀,著一層夾襖步出監(jiān)牢的瞬間饵沧,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工蝗敢, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留捷泞,地道東北人。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓寿谴,卻偏偏與公主長得像锁右,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子讶泰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評論 2 354