为了账号安全,请及时绑定邮箱和手机立即绑定

SpringBoot整合系列-PageHelper分页插件

标签:
Java

出处地址:https://www.cnblogs.com/V1haoge/p/9971043.html

SpringBoot整合MyBatis分页插件PageHelper

步骤

第一步:首先整合MyBatis

参照之前SpringBoot整合系列-整合MyBatis

第二步:添加必要的依赖

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

第三步:添加必要的配置

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

@Configurationpublic 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数据库的方言
        pageHelper.setProperties(properties);        return pageHelper;
    }
}

第五步:使用插件

6-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">
    
    <!--省略多余内容-->
    
    <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 {    
    //省略多余内容
    
    List<Book> getBooks(Book book);    int count(Book book);
}

6-2 定义service

@Service@Log4j2public class BookService {    
    @Autowired
    private BookRepository bookRepository;    
    // 省略多余内容
    
    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来承载分页信息,你也可以自定义分页模型来进行承载,但一般情况下使用给定的完全能满足要求

6-3 定义controller

@RestController@RequestMapping("/book")@Api(description = "书籍接口")@Log4j2public class BookApi {    
    @Autowired
    private BookService bookService;    
    // 省略多余内容
    
    @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);
    }

}


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消