MyBatis-Plus 페이지 나누기 잘못된 해결 방법

31364 단어 SpringBoot

MyBatis-Plus 페이지 나누기 잘못된 해결 방법

  • 질문
  • 해결 방법
  • 문제.


    자신이 마음대로 만든 스프링부트 프로젝트에 마이 베이트플러스를 통합했는데 실제 사용 과정에서 페이지 나누기 결과가 정확하지 않다는 것을 발견하고 코드와 해결 방법을 붙였다.
        /**
         *         
         * @param currentPage    
         * @param pageSize pagesize
         * @return   
          */
        @RequestMapping("/all/page")
        @ResponseBody
        public ResultBean<IPage<User>> getUserByPage(Long currentPage,Long pageSize){
            ResultBean<IPage<User>> resultBean=new ResultBean<>();
            try{
                Page<User> userPage=new Page<>(currentPage,pageSize);
                IPage<User> userIPage=userService.page(userPage);
                resultBean.setData(userIPage);
                resultBean.setMsg("    ");
                resultBean.setCode(ResultBean.SUCCESS);
            }catch (Exception e){
                resultBean.setData(null);
                resultBean.setMsg(e.getMessage());
                resultBean.setCode(ResultBean.FAIL);
            }
            return resultBean;
        }
    

    PostMan 테스트 결과는 다음과 같습니다.
    {
        "code": 0,
        "msg": "    ",
        "data": {
            "records": [
                {
                    "id": 1,
                    "username": "Eli",
                    "nickname": "Eli",
                    "password": "1",
                    "enabled": true,
                    "email": null,
                    "avatar": null,
                    "regTime": "2018-12-14T01:37:11.000+0000"
                },
                {
                    "id": 2,
                    "username": "  ",
                    "nickname": "Eli",
                    "password": "1",
                    "enabled": true,
                    "email": null,
                    "avatar": null,
                    "regTime": "2018-12-14T01:49:59.000+0000"
                },
                {
                    "id": 3,
                    "username": "  ",
                    "nickname": "Eli",
                    "password": "1",
                    "enabled": true,
                    "email": null,
                    "avatar": null,
                    "regTime": "2018-12-14T16:01:36.000+0000"
                },
                {
                    "id": 4,
                    "username": "   ",
                    "nickname": "Eli",
                    "password": "1",
                    "enabled": true,
                    "email": null,
                    "avatar": null,
                    "regTime": "2018-12-14T17:23:56.000+0000"
                },
                {
                    "id": 5,
                    "username": " 1",
                    "nickname": "Eli",
                    "password": "1",
                    "enabled": true,
                    "email": null,
                    "avatar": null,
                    "regTime": "2018-12-14T17:46:23.000+0000"
                },
                {
                    "id": 6,
                    "username": " 2",
                    "nickname": "Eli",
                    "password": "1",
                    "enabled": true,
                    "email": null,
                    "avatar": null,
                    "regTime": "2018-12-14T17:46:27.000+0000"
                },
                {
                    "id": 7,
                    "username": " 3",
                    "nickname": "Eli",
                    "password": "1",
                    "enabled": true,
                    "email": null,
                    "avatar": null,
                    "regTime": "2018-12-14T17:46:33.000+0000"
                },
                {
                    "id": 8,
                    "username": " 4",
                    "nickname": "Eli",
                    "password": "1",
                    "enabled": true,
                    "email": null,
                    "avatar": null,
                    "regTime": "2018-12-14T17:46:42.000+0000"
                },
                {
                    "id": 9,
                    "username": " 5",
                    "nickname": "Eli",
                    "password": "1",
                    "enabled": true,
                    "email": null,
                    "avatar": null,
                    "regTime": "2018-12-14T17:46:49.000+0000"
                }
            ],
            "total": 0,
            "size": 3,
            "current": 1,
            "searchCount": true,
            "pages": 0
        }
    }
    

    페이지가 나누어지지 않은 것을 볼 수 있습니다. log4j 로그를 보십시오.
    ==>  Preparing: SELECT id,username,nickname,password,enabled,email,avatar,regTime FROM user 
    ==> Parameters: 
    <==    Columns: id, username, nickname, password, enabled, email, avatar, regTime
    <==        Row: 1, Eli, Eli, 1, 1, null, null, 2018-12-13 19:37:11
    <==        Row: 2,   , Eli, 1, 1, null, null, 2018-12-13 19:49:59
    <==        Row: 3,   , Eli, 1, 1, null, null, 2018-12-14 10:01:36
    <==        Row: 4,    , Eli, 1, 1, null, null, 2018-12-14 11:23:56
    <==        Row: 5,  1, Eli, 1, 1, null, null, 2018-12-14 11:46:23
    <==        Row: 6,  2, Eli, 1, 1, null, null, 2018-12-14 11:46:27
    <==        Row: 7,  3, Eli, 1, 1, null, null, 2018-12-14 11:46:33
    <==        Row: 8,  4, Eli, 1, 1, null, null, 2018-12-14 11:46:42
    <==        Row: 9,  5, Eli, 1, 1, null, null, 2018-12-14 11:46:49
    <==      Total: 9
    

    해결책


    나중에 MP의 홈페이지를 보니 페이지 나누기 플러그인을 설정해야 한다=.(본멍신은 몰랐네).구성 클래스를 추가하려면 다음과 같이 하십시오.
    import org.mybatis.spring.annotation.MapperScan;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.transaction.annotation.EnableTransactionManagement;
    
    /**
     * MyBatis-Plus   
     * @author Eli
     * @date 2018/12/14
     */
    @EnableTransactionManagement
    @Configuration
    @MapperScan("com.eli.etool.dao")
    public class MybatisPlusConfig {
        /**
         *     
         */
        @Bean
        public PaginationInterceptor paginationInterceptor() {
            return new PaginationInterceptor();
        }
    }
    

    다시 한 번 런을 했는데 결과가 정상인 것을 발견했다.
    {
        "code": 0,
        "msg": "    ",
        "data": {
            "records": [
                {
                    "id": 4,
                    "username": "   ",
                    "nickname": "Eli",
                    "password": "1",
                    "enabled": true,
                    "email": null,
                    "avatar": null,
                    "regTime": "2018-12-14T17:23:56.000+0000"
                },
                {
                    "id": 5,
                    "username": " 1",
                    "nickname": "Eli",
                    "password": "1",
                    "enabled": true,
                    "email": null,
                    "avatar": null,
                    "regTime": "2018-12-14T17:46:23.000+0000"
                },
                {
                    "id": 6,
                    "username": " 2",
                    "nickname": "Eli",
                    "password": "1",
                    "enabled": true,
                    "email": null,
                    "avatar": null,
                    "regTime": "2018-12-14T17:46:27.000+0000"
                }
            ],
            "total": 9,
            "size": 3,
            "current": 2,
            "searchCount": true,
            "pages": 3
        }
    }
    
    JsqlParserCountOptimize sql=SELECT  id,username,nickname,password,enabled,email,avatar,regTime  FROM user
    ==>  Preparing: SELECT COUNT(1) FROM user 
    ==> Parameters: 
    <==    Columns: COUNT(1)
    <==        Row: 9
    ==>  Preparing: SELECT id,username,nickname,password,enabled,email,avatar,regTime FROM user LIMIT ?,? 
    ==> Parameters: 3(Long), 3(Long)
    <==    Columns: id, username, nickname, password, enabled, email, avatar, regTime
    <==        Row: 4,    , Eli, 1, 1, null, null, 2018-12-14 11:23:56
    <==        Row: 5,  1, Eli, 1, 1, null, null, 2018-12-14 11:46:23
    <==        Row: 6,  2, Eli, 1, 1, null, null, 2018-12-14 11:46:27
    <==      Total: 3
    
    

    Mysql의 LIMIT를 실제로 사용한 것도 볼 수 있다.

    좋은 웹페이지 즐겨찾기