Programming Project ์ž‘์—…์‹ค/๋‚ด์šฉ ์ •๋ฆฌ

[BackEnd][Maven-PJ] ์‚ฌ๋‚ด ๊ฐœ๋ฐœ์ž ์ปค๋ฎค๋‹ˆํ‹ฐ ์„œ๋น„์Šค - Paging ์ฒ˜๋ฆฌ

์ฃผ๋‹ˆ์“ฐ๐Ÿง‘‍๐Ÿ’ป 2022. 3. 9. 17:58
728x90
๋ฐ˜์‘ํ˜•

 

๐Ÿง‘๐Ÿป‍๐Ÿ’ป Git Hub ์ฃผ์†Œ

 

 

๐Ÿ—‚ ๋ชฉ์ฐจ

โ— [BackEnd][Maven-PJ] ๊ฐœ๋ฐœ์ž ์ปค๋ฎค๋‹ˆํ‹ฐ ์„œ๋น„์Šค - ๊ฒŒ์‹œํŒ ๋งŒ๋“ค๊ธฐ : ๊ธ€ ๋“ฑ๋ก(์ž‘์„ฑ) / ์ˆ˜์ •

โ— [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 ๋ณ€์ˆ˜

 

๋จผ์ € Paging Clas์˜ member ๋ณ€์ˆ˜๋ฅผ ๋ณด๋ฉด ์œ„์™€ ๊ฐ™์€ ๊ฒƒ์ด์—์š”.
์ด Data ๊ฐœ์ˆ˜๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์„ totalCount ๋ณ€์ˆ˜, ์ด์šฉ์ž๊ฐ€ ์œ„์น˜ํ•œ Page์—์„œ ๋ณด์—ฌ์ง๊ฒŒ ๋  ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ ๊ฐœ์ˆ˜๋ฅผ ๋‹ด์€ displayPageNum ๋ณ€์ˆ˜ ๋“ฑ์ด ์žˆ๋Š” ๊ฒƒ์ด์—์š”.

 

getTotalCount()

 

์œ„์˜ Method๋Š” Paging ์ฒ˜๋ฆฌ๋ฅผ ํ•  ๋•Œ, ๊ฒŒ์‹œํŒ ์ „์ฒด Data ๊ฐœ์ˆ˜๊ฐ€ ํ•„์š”๋กœ ํ•˜๋Š” ๊ณณ์— ํ•ด๋‹น ๊ฐ’์„ ์ „๋‹ฌ ํ•ด ์ฃผ๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด ์ค€ ๊ฒƒ์ด์—์š”.

 

pagingDate()

 

์œ„์˜ pagingData()๋Š” Paging ์ฒ˜๋ฆฌ์— ํ•„์š”ํ•œ ๊ณ„์‚ฐ์„ ์œ„ํ•ด ์„ ์–ธํ•œ Method์ธ ๊ฒƒ์ด์—์š”.

์ตœ์ดˆ 45๋ฒˆ์งธ ์ค„์„ ํ†ตํ•ด ์•„๋ž˜ ๊ทธ๋ฆผ์˜ ๋ ๋ฒˆํ˜ธ๋ฅผ ๊ตฌํ•˜๋Š” ์ฝ”๋“œ ๋ถ€๋ถ„์ธ ๊ฒƒ์ด์—์š”. ๊ทธ๋ฆผ์—์„œ๋Š” 10๋ฒˆ์ด๋„ค์š”!

๐Ÿ’ก ์ฐธ๊ณ 
Math.ceil์ด๋ž€?
java.lang.Math ํด๋ž˜์Šค๋Š” ์ˆ˜ํ•™ ๊ณ„์‚ฐ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” Method๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋ชจ๋‘ static ๋ฉ”์„œ๋“œ์ด๊ธฐ ๋•Œ๋ฌธ์— Math ํด๋ž˜์Šค๋กœ ๋ฐ”๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ.


์ถœ๋ ฅ ๊ฒฐ๊ณผ :
101.0
-90.0
100.0
-90.0

 

Criteria Class์˜ getPage()

๊ทธ๋Ÿฐ ๋’ค 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๊ฐœ์˜ ๊ธ€์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ณ  ๊ณ„์‚ฐ์„ ํ•ด ๋ณผ๊ฒŒ์š”.

 

Criteria Member ๋ณ€์ˆ˜

 

Criteria getPerPageNum()

 

๋จผ์ € ๋ถ€๋ชจ 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๋ฅผ ๋ฐ˜ํ™˜ ํ•ด ์ค€ ๊ฒƒ์ด์—์š”. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
๋ฐ˜์‘ํ˜•