Серия Spring Boot (четыре) для реализации запроса пейджинга mybatis

Spring Boot
Серия Spring Boot (четыре) для реализации запроса пейджинга mybatis

предисловие

Если вы используете mybatis для написания запроса на подкачку, это более хлопотно.Вам нужно сначала написать оператор выбора, чтобы получить количество, а затем написать оператор запроса на пейджинг. Здесь используется мощный плагин ==pagehelper==, который может помочь разработчикам быстро реализовать пейджинг.

преимущество:

  • Отвязан от файла sqlmapper.xml и реализован в виде плагина, чтобы избежать прямого написания запроса на подкачку sql
  • удобно и быстро

Ввести зависимость pagehelper

Внесите связанные зависимости в pom.xml

<!--        添加分页插件 pagehelper -->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.2.13</version>
        </dependency>

Конфигурация в application.yml

# 分页插件
pagehelper:
  helperDialect: mysql
  reasonable: false
  params: count=countSql
  supportMethodsArguments: true
  

проиллюстрировать:

==helperDialect==: Укажите базу данных, если она не указана, тип базы данных будет определен автоматически.

==reasonable==: параметр рационализации, по умолчанию false,

true:页码小于1,查询第一页数据,页码大于总数时,返回最后一页数据;
false:页码小于等于1都返回第一页数据,页码大于总数时返回空

==supportMethodsArguments==: по умолчанию false, true: плагин подкачки автоматически разбивает страницы, если находит подходящее значение в соответствии со значением в параметрах.


добавить интерфейс

dao

    List<UserMoudel> findAllByPage();

service

    PageInfo<UserMoudel> findAllByPage(int page, int offset);

serviceImpl, здесь основное внимание уделяется реализации, а также это основной код для использования ==pagehelper==

    @Override
    public PageInfo<UserMoudel> findAllByPage(int page, int offset) {
        // 这一句是核心
        PageHelper.startPage(page,offset);
        List<UserMoudel> all = dao.findAllByPage();
       return  new PageInfo<UserMoudel>(all);
    }

controller

    @ApiOperation(value = "分页查询用户信息")
    @GetMapping("/findAllByPage")
    @ResponseBody
    public PageInfo<UserMoudel> findAllByPage(@RequestParam(value = "当前页码",required = true) int page,@RequestParam(value = "每页数量",required = true) int offset){
        return userSvc.findAllByPage(page,offset);
    }

Протестируйте интерфейс запроса пейджинга

Тест пройден

краткое изложение проблемы

проблема с конфигурацией pagehelper в application.yml

1 Укажите базу данныхдолжениспользуя ==helperDialect==,не хотетьИспользуйте ==dialect==, иначе программа весенней загрузки не запустится со следующим исключением:

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2020-06-14 13:56:42.839 ERROR 2104 --- [  restartedMain] o.s.boot.SpringApplication               : Application run failed

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.github.pagehelper.autoconfigure.PageHelperAutoConfiguration': Invocation of init method failed; nested exception is com.github.pagehelper.PageException: java.lang.ClassNotFoundException: mysql

Из исключения видно, что mysql не может быть найден, а затем отладить, и обнаружил, что это проблема с указанной базой данных в конфигурации