2022. 3. 9. 17:58ใProgramming Project ์์ ์ค/๋ด์ฉ ์ ๋ฆฌ
๐ง๐ป๐ป Git Hub ์ฃผ์
๐ ๋ชฉ์ฐจ
โ [BackEnd][Maven-PJ] ๊ฐ๋ฐ์ ์ปค๋ฎค๋ํฐ ์๋น์ค - ๊ฒ์ํ ๋ง๋ค๊ธฐ : ๋ชฉ๋ก ์กฐํ
โ [BackEnd][Maven-PJ]๊ฐ๋ฐ์ ์ปค๋ฎค๋ํฐ ์๋น์ค - ๊ฒ์ํ ๋ง๋ค๊ธฐ : ์์ธ ์กฐํ
โ [BackEnd][Maven-PJ]๊ฐ๋ฐ์ ์ปค๋ฎค๋ํฐ ์๋น์ค - ๊ฒ์ํ ๋ง๋ค๊ธฐ : ์ญ์
โ [BackEnd][Maven-PJ] ์ฌ๋ด ๊ฐ๋ฐ์ ์ปค๋ฎค๋ํฐ ์๋น์ค - ๊ฒ์ํ : ๋ต๋ณ ๋ฑ๋ก / ์์
โ [BackEnd][Maven-PJ] ์ฌ๋ด ๊ฐ๋ฐ์ ์ปค๋ฎค๋ํฐ ์๋น์ค - ๊ฒ์ํ : ๋ต๋ณ ์ญ์
๐จ๐ฉ๐ง๐ฆ ํ์ ๊ด๋ จ
โ [BackEnd][Maven-PJ] ์ฌ๋ด ๊ฐ๋ฐ์ ์ปค๋ฎค๋ํฐ ์๋น์ค - ํ์ ๊ด๋ จ : ํ์ ๊ฐ์
๐๋ถ ๋ก
โ [BackEnd][Maven-PJ]๊ฐ๋ฐ์ ์ปค๋ฎค๋ํฐ ์๋น์ค - ๊ฒ์ํ ๋ง๋ค๊ธฐ : Paging์ฒ๋ฆฌ
๐ค ๋ด๊ฐ ๋ง๋ Exception
โ [Exception ์ ๋ฆฌ] org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)
โ [Vue.js][Spring] Post Data ์ ์ก ๊ฐ null๊ฐ ์ ์ก ๋ฌธ์
โ
๐ Paging ์ฒ๋ฆฌ๋?
ํ์ด์ง ์ฒ๋ฆฌ๋ ๊ฒ์ํ์์ ๋ชฉ๋ก ์กฐํ๋ฅผ ํ ๋, ํ ํ์ด์ง ๋น ์ผ๋งํผ์ ๋ชฉ๋ก์ ๋ณด์ฌ์ฃผ๊ณ , ๋ค๋ฅธ ํ์ด์ง๋ก ์ด๋ํ ์ ์๊ฒ ํด ์ฃผ๋ ๋ฐฉ๋ฒ๋ก ์ธ ๊ฒ์ด์์.
์์ ๊ฐ์ด 1 Page์๋ 1 ~ 10๊น์ง์ ๋ชฉ๋ก์ด ์ถ๋ ฅ ๋๋๋ก ํ๋ ๊ฒ์ด์์.
๐ฝ Paging ์ฒ๋ฆฌ
|
์์ Code๋ Paging ์ฒ๋ฆฌ๋ฅผ ๊ณตํต์ผ๋ก ์ฒ๋ฆฌํ ์ ์๊ฒ ๋ง๋ Paging Class์ธ ๊ฒ์ด์์.
๋จผ์ Paging Clas์ member ๋ณ์๋ฅผ ๋ณด๋ฉด ์์ ๊ฐ์ ๊ฒ์ด์์.
์ด Data ๊ฐ์๋ฅผ ๊ฐ์ง๊ณ ์์ totalCount ๋ณ์, ์ด์ฉ์๊ฐ ์์นํ Page์์ ๋ณด์ฌ์ง๊ฒ ๋ ํ์ด์ง ๋ฒํธ ๊ฐ์๋ฅผ ๋ด์ displayPageNum ๋ณ์ ๋ฑ์ด ์๋ ๊ฒ์ด์์.
์์ Method๋ Paging ์ฒ๋ฆฌ๋ฅผ ํ ๋, ๊ฒ์ํ ์ ์ฒด Data ๊ฐ์๊ฐ ํ์๋ก ํ๋ ๊ณณ์ ํด๋น ๊ฐ์ ์ ๋ฌ ํด ์ฃผ๊ธฐ ์ํด ๋ง๋ค์ด ์ค ๊ฒ์ด์์.
์์ pagingData()๋ Paging ์ฒ๋ฆฌ์ ํ์ํ ๊ณ์ฐ์ ์ํด ์ ์ธํ Method์ธ ๊ฒ์ด์์.
์ต์ด 45๋ฒ์งธ ์ค์ ํตํด ์๋ ๊ทธ๋ฆผ์ ๋ ๋ฒํธ๋ฅผ ๊ตฌํ๋ ์ฝ๋ ๋ถ๋ถ์ธ ๊ฒ์ด์์. ๊ทธ๋ฆผ์์๋ 10๋ฒ์ด๋ค์!
๐ก ์ฐธ๊ณ
Math.ceil์ด๋?
java.lang.Math ํด๋์ค๋ ์ํ ๊ณ์ฐ์ ์ฌ์ฉํ ์ ์๋ Method๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ด๋ค. ๋ชจ๋ static ๋ฉ์๋์ด๊ธฐ ๋๋ฌธ์ Math ํด๋์ค๋ก ๋ฐ๋ก ์ฌ์ฉ ๊ฐ๋ฅ.
์ถ๋ ฅ ๊ฒฐ๊ณผ :
101.0
-90.0
100.0
-90.0
๊ทธ๋ฐ ๋ค super(์์ํ ๋ถ๋ชจ Class)์ getPage()๋ฅผ ํธ์ถํ๊ฒ ๋๋ฉด ํ์ฌ ์ด์ฉ์๊ฐ ์์นํ page ๋ฒํธ๊ฐ ๋ฐํ๋๋ ๊ฒ์ด์์.
์ง๊ธ์ ์ด์ฉ์๊ฐ 1 Page์ ์๋ค๊ณ ๊ฐ์ ์ ํด ๋ณผ๊ฒ์.
๊ทธ ๋ค์ displayPageNum ๋ณ์์ ๊ฐ์ด ์์์ ์ด ๋์ฌ์๋ ์๊ธฐ ๋๋ฌธ์ (double)๋ก ํ ๋ณํ์ ํด์ฃผ๊ณ , ์๋ ๊ฒ์ด์์.
displayPageNum์ ํ Page์์ ๋ณด์ฌ์ง๊ฒ ๋ Paging ๋ฒ์ ํน์ Page ๋ฒํธ์ ๊ฐ์๋ผ๊ณ ์๊ฐํ๋ฉด ์ฌ์ธ ๊ฒ์ด์์.
์ฌ๊ธฐ์๋ displayPageNum์ 10์ ์ฃผ์๊ธฐ ๋๋ฌธ์ 1 / 10์ด ๋ ๊ฒ์ด๊ณ , ๊ทธ ๊ณ์ฐ์ Math.ceil()์ ๋ฃ์ด์ฃผ๊ฒ ๋๋ฉด ์ฌ๋ฆผ์ด ๋์ด 1์ด ๋์ค๊ฒ ๋ ๊ฒ์ด์์. ์ด ๊ฐ์ ๋ค์ displayPageNum ๊ฐ์ธ 10์ ๋ฃ์ด ์ฃผ๊ฒ ๋๋ฉด 1 * 10์ด ๋๊ธฐ ๋๋ฌธ์ endPage ๋ณ์์๋ 10์ด ๋ค์ด๊ฐ๊ฒ ๋ ๊ฒ์ด์์.
๊ทธ๋ผ ์ด๋ฒ์ 2 Page์ ์๋ค๊ณ ๊ฐ์ ํ๊ณ ๊ณ์ฐ ํด ๋ณผ๊ฒ์.
2 / 10์ 0.2๊ฐ ๋์ฌ ๊ฒ์ด๊ณ , Math.ceil()๋ก ์ธํด ์ด ๊ฐ์ 2๋ก ์ฌ๋ฆผ์ด ๋ ๊ฒ์ด์์. ์ด ๊ฐ์ displayPageNum ๊ฐ์ธ 10์ ๋ฃ์ด์ฃผ๊ฒ ๋๋ฉด 2 * 10์ด๊ธฐ ๋๋ฌธ์ 20์ด endPage ๋ณ์์ ๋ค์ด๊ฐ๊ฒ ๋ ๊ฒ์ด์์.
์ฐ๋ฆฌ ๋ค์์ startPage ๋ณ์์ ์ด๋ค ๊ฐ์ด ๋ค์ด๊ฐ๋์ง ํ๋ฒ ๊ณ์ฐ์ ํด ๋ณผ๊ฒ์ด์์.
์ด์ฉ์๊ฐ 1 Page์ ์๋ค๊ณ ๊ฐ์ ์ ํ๋ค๋ฉด endPage ๋ณ์์๋ 10์ด ๋ค์ด ๊ฐ ์์ ๊ฒ์ด์์. ๊ฑฐ๊ธฐ์ displayPageNum์ 10์ด๋๊น ๊ทธ ๊ฐ์ ๋นผ๋ฉด 0์ด ๋ ๊ฒ์ด๊ณ , ๊ฑฐ๊ธฐ์ 1์ ๋ํ๋ฉด startPage์๋ 1์ด ๋ค์ด๊ฐ๊ฒ ๋ ๊ฒ์ด์์.
์์์ ์ด ๋์ฌ ์๋ ์์ผ๋ (int)๋ก ํ๋ณํ์ ๋ฃ์ด ์ค ๊ฒ์ด์์. ๊ทธ๋์ผ์ง startPage ๋ฒํธ๊ฐ ์ ํํ๊ฒ ๊ณ์ฐ์ด ๋ ๊ฒ์ด๋๊น์!
๊ทธ๋ผ ์ด๋ฒ์ ์ด์ฉ์๊ฐ 2 Page์ ์๋ค๊ณ ๊ฐ์ ํ๋ค๋ฉด endPage ๋ณ์์๋ 20์ด ๋ค์ด ๊ฐ ์์ ๊ฒ์ด๊ณ , ๊ฑฐ๊ธฐ์ displayPageNum์ 10์ด๋๊น ๊ทธ ๊ฐ์ ๋นผ๊ฒ ๋๋ฉด 10์ด ๋ ๊ฒ์ด๊ณ , ๊ฑฐ๊ธฐ์ 1์ ๋ํ๋ฉด 11์ด ๋ ๊ฒ์ด์์!
์๊ฐ์ ํด ๋ณด๋ฉด ์ด์ฉ์๊ฐ 1Page์ ์๋ค๊ณ ํ์ ๋๋ startPage ๊ฐ์ 1์ด๊ณ , endPage ๊ฐ์ 10 ์ด๋๊น 1 ~ 10์ด๋ผ๋ ๋ฒ์๊ฐ ๋์ค๊ณ , 2Page์ ์๋ค๊ณ ํ์ ๋๋ startPage ๊ฐ์ 11์ด๊ณ , endPage ๊ฐ์ 20 ์ด๋๊น 11 ~ 20์ด๋ผ๋ ๋ฒ์๊ฐ ๋์ค๋ ๊ฒ์ด์์.
์ด๋ฒ์๋ tempEndPage ๋ณ์์ ๊ฐ์ ๋ฃ๋ ๊ฒ์ ํ์ธ ํด ๋ณผ ๊ฒ์ด์์.
totalCount ๋ณ์์๋ ๊ฒ์ํ ์ ์ฒด Data ๊ฐ์(๋ชฉ๋ก์ ์ด ์)๊ฐ ๋ค์ด ์๋ ๊ฒ์ด์์. ์๋ฅผ ๋ค์ด ํด๋น ๊ฒ์ํ์ 30๊ฐ์ ๊ธ์ด ์๋ค๊ณ ๊ฐ์ ํ๊ณ ๊ณ์ฐ์ ํด ๋ณผ๊ฒ์.
๋จผ์ ๋ถ๋ชจ Class์ getPerPageNum์ ํธ์ถ ํ๊ณ ์๋ ๊ฒ์ด์์. ํด๋น Member ๋ณ์๋ Page ๋น ๋ณด์ฌ์ค ๊ฒ์๊ธ ๊ฐ์๋ฅผ ๋ด๊ณ ์๋ ๊ฒ์ด์์.
์๋ฅผ ๋ค์ด getPerPageNum์ 10 ์ฆ, ํ ํ์ด์ง๋น 10๊ฐ์ ๊ฒ์๊ธ์ด ์ถ๋ ฅ๋๊ฒ ํ๋ค๊ณ ๊ฐ์ ์ ํ๊ณ ๊ณ์ฐ์ ํ๋ฉด 30 / 10์ด ๋ ๊ฒ์ด๊ณ , ์ด๋ฅผ ๊ณ์ฐ ํ๋ฉด 3์ด ๋ ๊ฒ์ด์์. ์ฌ๋ฆผ์ ํ์๊ฐ ์๊ณ , ํ ๋ณํ๋ ํ์๊ฐ ์์ผ๋ tempEndPage์๋ 3์ด ๋ค์ด๊ฐ๊ฒ ๋ ๊ฒ์ด์์.
์ฐ๋ฆฌ๊ฐ startPage๋ฅผ 1, endPage๋ฅผ 10์ด๋ผ๊ณ ๊ฐ์ ์ ํ์ ๋, tempEndPage๋ 3์ด๊ณ , endPage๋ 10์ด๋๊น ์์ if๋ฌธ์ ๋ค์ด๊ฐ๊ฒ ๋๊ณ , endPage์๋ temEndPage์ ๊ฐ 3์ด ๋ค์ด๊ฐ๊ฒ ๋๋ ๊ฒ์ด์์.
์ด์ Button์ ํ์ฑ, ๋นํ์ฑํ ์ฒ๋ฆฌ๋ ์์ ๊ฐ์ด ํ๋ ๊ฒ์ด์์. 3ํญ ์ฐ์ฐ์๋ฅผ ํตํด ๊ตฌํ ํ๋๋ฐ, startPage๊ฐ 1์ด๋ฉด? false๋ฅผ ๋ฐํํ๊ณ , ์๋๋ฉด true๋ฅผ ๋ฐํํ๊ฒ ํ ๊ฒ์ด์์.
์์ Page๊ฐ 1์ด๋ผ๋ฉด ์ด์ ์ผ๋ก ๋์๊ฐ ์ซ์๊ฐ ์๋ ๊ฒ์ด์์. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ Button์ ๋นํ์ฑํ ํด์ผ ํ๊ธฐ ๋๋ฌธ์ false๋ฅผ ๋ฐํํ๋ ๊ฒ์ด๊ณ , 1๊ณผ ๊ฐ์ง ์๋ค๋ฉด ๋น์ฐํ ์ด ์ Page๊ฐ ์กด์ฌํ๊ธฐ ๋๋ฌธ์ ํ์ฑํ๋ฅผ ์ํด true๋ฅผ ๋ฐํํ๋ ๊ฒ์ด์์.
์ด๋ฒ์๋ ๋ค์์ผ๋ก ๋์ด๊ฐ๋ Button์ ํ์ฑ, ๋นํ์ฑํ ์ฒ๋ฆฌ๋ฅผ ํ ๊ฒ์ด์์.
์ญ์ 3ํญ ์ฐ์ฐ์๋ฅผ ํตํด ๊ตฌํ์ ํ์๊ณ , endPage์ Page๋น ๋ณด์ฌ์ค ๊ฒ์๊ธ ๊ฐ์๋ฅผ ๋ด์ pserPageNum์ ์๋ฅผ ๊ณฑํ ๊ฒฐ๊ณผ๊ฐ ์ด Data ๊ฐ์๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๋ค๋ฉด ๋ค์์ผ๋ก ๋์ด๊ฐ ๊ณณ์ด ์๋ ๊ฒ์ด์์. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ false๋ฅผ ๋ฐํํ๊ณ , ๊ทธ๋ ์ง ์๋ค๋ฉด ๋ค์์ผ๋ก ๋์ด๊ฐ ๊ณณ์ด ์๋ค๋ ์๋ฏธ์ด๊ธฐ ๋๋ฌธ์ true๋ฅผ ๋ฐํ ํด ์ค ๊ฒ์ด์์.