๐Ÿ’ป ์ฝ”๋”ฉ ์ผ๊ธฐ : [Spring] 'MyBatis @Result ์–ด๋…ธํ…Œ์ด์…˜'

ybkยท2024๋…„ 6์›” 25์ผ

spring

๋ชฉ๋ก ๋ณด๊ธฐ
51/55
post-thumbnail

๐Ÿ”” 'MyBatis @Result ์–ด๋…ธํ…Œ์ด์…˜'์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž!


๐Ÿ’Ÿ @Result ์ •์˜

@Result ์–ด๋…ธํ…Œ์ด์…˜์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์ž๋ฐ” ๊ฐ์ฒด ๊ฐ„์˜ ๋งคํ•‘์„ ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค.
DB์˜ ์ปฌ๋Ÿผ ๊ฐ’์„ ์ž๋ฐ” ๊ฐ์ฒด์˜ ํ•„๋“œ์— ๋งคํ•‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ’Ÿ @Result ์˜ˆ์ œ

ProductMapper.java

@Select("""
        SELECT p.id,
               p.title,
               p.category,
               p.start_price,
               p.start_time,
               p.end_time,
               p.content,
               p.status
        FROM product p
        ORDER BY p.status DESC, p.end_time
        """)
@Results(id = "productList", value = {
        @Result(property = "id", column = "id"),
        @Result(property = "productFileList", column = "id", many = @Many(select = "selectFileByProductId"))
})
List<Product> selectAll();
  • @Result(property = "id", column = "id"): id ํ•„๋“œ๋Š” product ํ…Œ์ด๋ธ”์˜ id ์ปฌ๋Ÿผ๊ณผ ๋งคํ•‘๋ฉ๋‹ˆ๋‹ค.
  • @Result(property = "productFileList", column = "id", many = @Many(select = "selectFileByProductId")): productFileList ํ•„๋“œ๋Š” product_file ํ…Œ์ด๋ธ”์—์„œ product_id์™€ file_name์„ ์กฐํšŒํ•˜์—ฌ ProductFile ๊ฐ์ฒด์˜ ๋ฆฌ์ŠคํŠธ๋กœ ๋งคํ•‘๋ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ selectFileByProductId ๋ฉ”์„œ๋“œ๊ฐ€ @Many ์–ด๋…ธํ…Œ์ด์…˜๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜์–ด ํ•˜์œ„ ์ฟผ๋ฆฌ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

์ฃผ์˜ํ•  ์ 

  • property: ์ž๋ฐ” ๊ฐ์ฒด์˜ ํ•„๋“œ๋ช…์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
  • column: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ปฌ๋Ÿผ๋ช…์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
  • many: ๊ด€๊ณ„ํ˜• ๋งคํ•‘์—์„œ ์ผ๋Œ€๋‹ค ๊ด€๊ณ„๋ฅผ ์ •์˜ํ•  ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์ด์™€ ๊ฐ™์ด @Result ์–ด๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์ž๋ฐ” ๊ฐ์ฒด ๊ฐ„์˜ ์ •๊ตํ•œ ๋งคํ•‘์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” MyBatis๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

profile
๊ฐœ๋ฐœ์ž ์ค€๋น„์ƒ~

0๊ฐœ์˜ ๋Œ“๊ธ€