반응형
X정리X
SELECT COUNT(*) FROM post WHERE userId = 1;
Integer mTotalPages( );
size = 3;
totalPages = 2; = ceil(전체개수 5라면 / 3)
SELECT ceil(COUNT(*)/3) FROM post WHERE userId = 1;
사이즈 = 3 (상수)
현재 페이지 = 사용자입력 (변수)
전체 페이지 = (사이즈), (전체 게시글 수)
스칼라 서브쿼리 (결과가 한건)
SELECT
3 size,
0 currentPage,
(SELECT COUNT(*) FROM post WHERE userId = 1) totalCount,
(SELECT ceil(COUNT(*)/3) FROM post WHERE userId = 1) totalPages,
p.*
FROM post p
ORDER BY p.id DESC
LIMIT 0*3, 3;
db에서 1이 나오면 true, 0은 false
SQL처럼 데이터만 다루는 언어를 DSL(Domain Specific Language)이라고 한다.
데이터를 다루는데 특화된 언어인 것이다.
토탈 페이지가 2이고
현재 페이지가 0일 때
-- 변수 선언(실행시에 메모리에 띄움)
SET @currentPage = 0;
SELECT
if(@currentPage=0, TRUE, FALSE) FIRST,
if(@currentPage=(SELECT ceil(COUNT(*)/3) FROM post WHERE userId = 1)-1, TRUE, FALSE) LAST,
3 size,
0 currentPage,
(SELECT COUNT(*) FROM post WHERE userId = 1) totalCount,
(SELECT ceil(COUNT(*)/3) FROM post WHERE userId = 1) totalPages,
p.*
FROM post p
ORDER BY p.id DESC
LIMIT 0, 3; -- LIMIT (0*3), 3;
토탈 페이지가 2이고
현재 페이지가 1일 때
* 페이지넘버는 첫번째 페이지가 0이라서 2번째 페이지 넘버가 1이다.
토탈 페이지에 -1 해줘야 정상적으로 돌아간다.
-- 변수 선언(실행시에 메모리에 띄움)
SET @currentPage = 1;
SELECT
if(@currentPage=0, TRUE, FALSE) FIRST,
if(@currentPage=(SELECT ceil(COUNT(*)/3) FROM post WHERE userId = 1)-1, TRUE, FALSE) LAST,
3 size,
0 currentPage,
(SELECT COUNT(*) FROM post WHERE userId = 1) totalCount,
(SELECT ceil(COUNT(*)/3) FROM post WHERE userId = 1) totalPages,
p.*
FROM post p
ORDER BY p.id DESC
LIMIT 0, 3; -- LIMIT (0*3), 3;
쿼리를 직접 만드면 자바 오브젝트에 매핑하는게 귀찮다..
머스태치에서 값을 뿌릴 때 안에 키값이 없을 때 뿌리는 법
{{.}}
바로 값이 찍힌다
반응형