1. 程式人生 > >mybatis分頁外掛的使用

mybatis分頁外掛的使用

基本原理

sqlsessionFactory -> sqlSession-> executor -> mybatis sql statement
通過mybatis plugin 增加攔截器,然後拼裝分頁

使用方法

一、引入依賴

<!-- 分頁外掛依賴 -->
<dependency>
    <groupId>com.github.pagehelper</groupId>
	<artifactId>pagehelper</artifactId>
	<version>4.1.0</version>
</dependency>

二、增加配置檔案

import com.github.pagehelper.PageHelper;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.Properties;

@Configuration
public class MyBatisConfig {
    @Bean
    public PageHelper pageHelper(){
        PageHelper pageHelper = new PageHelper();
        Properties p = new Properties();
        p.setProperty("offsetAsPageNum","true");
        p.setProperty("rowBoundsWithCount","true");
        p.setProperty("reasonable","true");
        pageHelper.setProperties(p);
        return pageHelper;
    }
}

三、包裝類

PageHelper.startPage(page, size);
PageInfo<VideoOrder> pageInfo = new PageInfo<>(list);

例如:某個視訊介面
@RestController
@RequestMapping("/api/v1/video")
public class VideoController {

    @Autowired
    private VideoService videoService;
    
    /**
     * 分頁介面
     *
     * @param page 當前第幾頁,預設是第一頁
     * @param size 每頁顯示幾條
     * @return
     */
    @GetMapping("page")
    public Object pageVideo(@RequestParam(value = "page", defaultValue = "1") int page,
                            @RequestParam(value = "size", defaultValue = "3") int size) {

        PageHelper.startPage(page, size);   // 進行分頁

        List<Video> list = videoService.findAll();   //從資料庫獲取查詢的所有結果
        PageInfo<Video> pageInfo = new PageInfo<>(list); 
        Map<String, Object> data = new HashMap<>();
        data.put("total_size", pageInfo.getTotal());//總條數
        data.put("total_page", pageInfo.getPages());//總頁數
        data.put("current_page", page);//當前頁
        data.put("data", pageInfo.getList());//資料
        return data;
    }
}