728x90
mybatis 로 쿼리를 작성하다보면 동일한 쿼리가 여러곳에 들어가는 경우가 생긴다
특히 postgresql 로 보면 with 같은 쿼리는 여러곳에서 반복적으로 사용할 수 있다. 그럴때 마다 같은 쿼리를 매번 작성하기 보단
변수처럼 sql 로 정의해서 include 해서 사용하면 효율적이다.
상단에 with 쿼리를 anpdsmDispCat_with_adc 로 정의하고
<include refid = "anpdsmDispCat_with_adc"/> 를 사용해 쿼리를 불러올 수 있다.
물론 <select id="getDispCatListInq" parameterType="DispCatMgntDto" resultType="DispCatMgntDto">
서비스의 파라미터도 사용할 수 있다.
주의할점) include 하는 곳보다 상단에 위치할 것.
<mapper namespace="net.grovesoft.anp.mapper.prdMgnt.PrdMgntMapper">
<sql id="anpdsmDispCat_with_adc">
WITH RECURSIVE adc (anp_disp_cat_cd, upp_anp_disp_cat_cd, disp_cat_nm, disp_cat_thmb_bimg_file_url, clr_infr_incl_yn, disp_cat_txt, sort_sn, usg_yn, disp_cat_depth) AS (
SELECT
w1.anp_disp_cat_cd, w1.upp_anp_disp_cat_cd, w1.disp_cat_nm, w1.disp_cat_thmb_bimg_file_url, w1.clr_infr_incl_yn, w1.disp_cat_txt, w1.sort_sn, w1.usg_yn, 1 AS disp_cat_depth
FROM
anp.anpdsm_disp_cat w1
WHERE
w1.upp_anp_disp_cat_cd = 'root' and anp_site_cd = #{userDto.siteCd}
UNION ALL
SELECT
w2.anp_disp_cat_cd, w2.upp_anp_disp_cat_cd, w2.disp_cat_nm, w2.disp_cat_thmb_bimg_file_url, w2.clr_infr_incl_yn, w2.disp_cat_txt, w2.sort_sn, w2.usg_yn, (disp_cat_depth + 1) AS disp_cat_depth
FROM
anp.anpdsm_disp_cat w2
INNER JOIN adc
ON w2.upp_anp_disp_cat_cd = adc.anp_disp_cat_cd and w2.anp_site_cd = #{userDto.siteCd}
)
</sql>
<!-- 전시 카테고리 조회 -->
<select id="getDispCatListInq" parameterType="DispCatMgntDto" resultType="DispCatMgntDto">
<include refid = "anpdsmDispCat_with_adc"/>
SELECT
anp_disp_cat_cd
, upp_anp_disp_cat_cd
, disp_cat_nm
, disp_cat_thmb_bimg_file_url
, disp_cat_txt
, sort_sn
, clr_infr_incl_yn
, usg_yn
FROM adc
where disp_cat_depth = #{dispCatDepth}
order by upp_anp_disp_cat_cd, sort_sn
</select>
</mapper>
LIST
'Develop' 카테고리의 다른 글
[Thymeleaf 타임리프] ModelAndView 리턴페이지에서 특정 id 영역만 변경하고 싶을 때 (12) | 2024.09.05 |
---|---|
[Mybatis] PK 를 count 혹은 max 쿼리로 생성 후 리턴받기 (16) | 2024.09.03 |
[Javascript] html 테이블을 엑셀 다운로드 하기 (2) | 2024.08.30 |
[타임리프] javascript 에서 타임리프 변수 사용하기 (0) | 2024.08.28 |
javascript 함수 return false 로 종료가 되지 않고 계속 진행될때 (2) | 2024.08.12 |