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를 실제로 사용한 것도 볼 수 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Java・SpringBoot・Thymeleaf】 에러 메세지를 구현(SpringBoot 어플리케이션 실천편 3)로그인하여 사용자 목록을 표시하는 응용 프로그램을 만들고, Spring에서의 개발에 대해 공부하겠습니다 🌟 마지막 데이터 바인딩에 계속 바인딩 실패 시 오류 메시지를 구현합니다. 마지막 기사🌟 src/main/res...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.