MyBatis-Plus(baomidou)分頁失敗,查詢全部數據

一句話描述

先簡單描述我的問題和解決辦法,爭取一句話幫助到大家:

如題,我的問題是分頁限制不生效,查詢到全部數據。解決辦法是通過查詢MyBatis-Plus官網,添加分頁配置。頁面內容如下,同學們可以按照官網進行配置,也可看對比我下面的詳細說明配置自己的項目。

問題詳述

項目中使用了MyBatis-Plus,查詢結果都正常,但是分頁結果不正確,下面的代碼爲示例,主要功能是模糊查詢名字和likeName相同的所有Student實體對象。正確查詢的list結果大小應該爲pageSize大小,但是分頁限制沒有生效,通過日誌也可以看出生成的sql語句中不包含limit限制。

@Service
public class StudentServiceImpl implements StudentService {
    @Autowired
    private StudentMapper studentMapper;

    @Override
    public List<Student> getStudentLike(String likeName, Integer pageNum, Integer pageSize) {
        if(StringUtils.isEmpty(likeName)){
            return null;
        }

        LambdaQueryWrapper<Student> queryWrapper = Wrappers.<Student>lambdaQuery()
                .like(Student::getName, likeName)
                .eq(Student::getDelStatus, 0);

        Page<Student> page = new Page<>(pageNum.longValue(), pageSize.longValue());
        IPage<Student> iPage = settlementBankMapper.selectPage(page, queryWrapper);
        return iPage.getRecords();
    }
}

解決辦法

添加分頁配置即可,如文章開頭貼的圖,我在我的項目中添加了一個配置類,做MyBatis-Plus的配置。代碼內容如下,注意配置自己的dao層目錄,例,我這裏配置的是上一段代碼中的StudentMapper所在的目錄。如果你需要註釋中的優化操作,就將該條註釋下的代碼註釋去掉即可。

@EnableTransactionManagement
@Configuration
@MapperScan("")// 這裏配置自己項目的dao層目錄
public class MybatisPlusConfig {
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
        // 設置請求的頁面大於最大頁後操作, true調回到首頁,false 繼續請求  默認false
        // paginationInterceptor.setOverflow(false);
        // 設置最大單頁限制數量,默認 500 條,-1 不受限制
        // paginationInterceptor.setLimit(500);
        // 開啓 count 的 join 優化,只針對部分 left join
        paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true));
        return paginationInterceptor;
    }
}

然後重新啓動分頁即可執行。

建議多看官網,如果有需要詳解這部分的,可以評論,我有時間會擴展這部分內容。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章