MyBatis
[MyBatis] 마이바티스 parameterType이 String인 데이터 사용하기 ( String을 <if> 에서 사용 )
모찌바라기
2022. 5. 13. 21:04
728x90
반응형
요즘 java 쪽을 아예 공부안하니, 계속 까먹어서 정리 하려고 한다.
마이바티스에서 parameterType을 보통 객체로 받아오는 일이 많은데, 데이터가 하나라면 String이나 int와 같이 받아올 일도 있을 것이다. 아래처럼
<!-- parameterType을 string으로 받아옴 -->
<select id="stringTest" parameterType="String" resultType="String">
<!-- parameterType을 int로 받아옴 -->
<select id="stringTest" parameterType="int" resultType="String">
이제 이렇게 받아온 녀석들을 어떻게 쓸까? 아무렇게나 써도 된다.
보통은 카멜케이스로 해서 컬럼명과 맞추는 게 기본이지만 아무렇게나 써도 된다.
아래를 보자.
<select id="stringTest" parameterType="String" resultType="String">
SELECT BEG_DE
FROM DBTEST.SM_POPUP
<!-- 아래 3개의 WHERE절 중 아무거나 하나를 써도 된다. -->
WHERE POP_SUB = #{popSub} <!-- 컬럼명인 POP_SUB를 카멜케이스로 해 popSub로 줌 -->
WHERE POP_SUB = #{value} <!-- 컬럼명인 POP_SUB를 value로 줌 -->
WHERE POP_SUB = #{iLoveMochi} <!-- 컬럼명인 POP_SUB를 iLoveMochi로 줌 -->
</select>
이렇게 value로 주든, iLoveMochi로 주든 내가 주고 싶은 값으로 주면 된다.
그럼 실제로 한번 쿼리를 돌려보자.
testMapper.java
// "팝테스트" 라는 문자열을 넘기는 Mapper작성 및 받아온 result를 콘솔에 찍음
public void stringTest() {
String srh = "팝테스트";
String result = sqlSession.selectOne("dao.Inquiry.stringTest", srh);
System.out.println(result);
}
testMapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="dao.Inquiry">
<select id="stringTest" parameterType="String" resultType="String">
SELECT BEG_DE
FROM DBTEST.SM_POPUP
WHERE POP_SUB = #{iLoveMochi}
</select>
</mapper>
결과는?
만약 마이바티스의 동적<if>문을 사용한다면 _parameter 를 활용하여야 한다. 아래는 <if>문 사용 코드
<select id="stringTest" parameterType="String" resultType="String">
SELECT BEG_DE
FROM DBTEST.SM_POPUP
<if test="_parameter!= null and _parameter != ''">
WHERE POP_SUB = #{_parameter}
</if>
</select>
이렇게 _parameter를 활용하면 된다. 아래는 결과 값
구글링을 하다보면 동적 <if>문에서 사용하려면 _parameter 또는 value를 쓰라는데.. 내가 테스트 했을 때는
_parameter만 되고 value는 똑같이 에러가 발생했다.
마이바티스 버전에 따른건지 왜 그런지는 모르겠지만.. 둘 중 아무거나 하나 쓰면 될 것 같다..
728x90
반응형