✅ 파라미터 값을 가져올 때
#{}
: setType()값을 대입 -> 자료형에 맞는 리터럴을 대입
SELECT * FROM EMPLOYEE WHERE GENDER = #{gender}
${}
: 문자열처리하는 표현 ex) 컬럼명 쓸때 사용
SELECT * FROM EMPLOYEE WHERE ${type} Like '%'||#{keyword}||'%'
✅ if 문
<if test="salFlag!=null and salary!=null and salary!=''">
<if test="salFlag=='ge'"> <!-- == 대신 eq로할수있음 -->
AND SALARY >= #{salary} <!-- AND SALARY >= #{salary} --> <!-- 위와 같은표현식임 -->
</if>
<if test="salFlag=='le'">
AND SALARY <![CDATA[<=]]> #{salary}
<!-- <만쓰면은 태그로인식되기때문에 <![CDATA[<=]]> -> 이스케이프문 -->
<!-- AND SALARY <= #{salary} --> <!-- 위와 같은표현식임 -->
</if>
<insert id="insertProduct">
INSERT INTO PRODUCT VALUES(#{productId},#{userId},#{productTitle},#{productStatus},DEFAULT,#{price},DEFAULT,DEFAULT,#{explanation},
<if test="keyword!=null">
#{keyword},
</if>
<if test="keyword==null">
'선택안함',
</if>
#{subCategoryName},#{areaName})
</insert>
✅ choose 문
<choose>
<when test="salFlag=='le'">
AND SALARY <= #{salary}
</when>
<otherwise>
AND SALARY >= #{salary}
</otherwise>
</choose>
✅ foreach 문
collection
: 배열방식의 데이터item
: 배열의 데이터를 저장하는 변수명open
: 반복을 시작할때 출력할 값을 설정close
: 반복을 끝냈을 때 출력할 값을 설정separator
: 반복할 때마다 출력할 값을 설정index
: 배열의 인덱스 번호를 저장하는 변수<foreach collection="deptCodes" open="(" close=")" separator="," item="d">
<!-- (로 시작 )로 끝나며 중간중간 값마다 ,를 넣어줌 -->
#{d}
</foreach>
✅ where 문
<select id="searchEmp" resultMap="empMap" parameterType="map"> <!-- 매개변수로 map을 받음 -->
SELECT * FROM EMPLOYEE
<where> <!-- where 절을 쓰면 알아서 쿼리문이 조합되서 쿼리문이 짜짐 -->
<!-- WHERE 1=1 -->
<!-- <trim prefix="WHERE" prefixOverrides="AND|OR"> --> <!-- trim절로 사용가능 where절과 동일 -->
<if test="keyword!=null and keyword!=''"> <!-- text값 넘길때 공란으로 넘길수 있기때문에 != '' -->
AND ${type} LIKE '%'||#{keyword}||'%' <!--알아서 필요할때 AND가 붙고, 필요하지않을땐 없어짐 -->
</if>
<if test="gender!=null and gender!=''">
AND GENDER = #{gender}
</if>
<!-- </trim> -->
</where>
</select>
위 예제를 보면 기본적으로
SELECT * FROM EMPLOYEE 문장이 실행이된다!
그 밑으로는 조건이 맞을경우 WHERE 조건식이 추가되면서 각 조건에 따라서 쿼리문을 실행한다