- MyBatis SQL : SQL 구문
sql 엘리멘트는 다른 구문에서 재사용가능한 SQL 구문을 정의할 때 사용된다.
로딩시점에 정적으로 파라미터처럼 사용할 수 있다.
<sql id="joinTable">
inner join member using(id)
inner join reply using(username)
</sql>
<select id="listCounsel" resultType="counsel">
select * from board
<include refid="joinTable"/>
</select>
sql 구문에서도 프로퍼티 값을 사용할 수 있다.
<sql id="userColumns">
${alias}.id,${alias}.username,${alias}.password
</sql>
<select id="selectUsers" resultType="map">
select
<include refid="userColumns">
<property name="alias" value="t1"/>
</include>,
<include refid="userColumns">
<property name="alias" value="t2"/>
</include>
from some_table t1
cross join some_table t2
</select>
프로퍼티값은 다음처럼 refid속성이나 include절 내부에서도 사용할 수 있다.
<sql id="sometable">
${prefix}Table
</sql>
<sql id="someinclude">
from
<include refid="${include_target}"/>
</sql>
<select id="select" resultType="map">
select
field1, field2, field3
<include refid="someinclude">
<property name="prefix" value="Some"/>
<property name="include_target" value="sometable"/>
</include>
</select>