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는 똑같이 에러가 발생했다.

 

_parameter 사용

 

value 사용시 에러

 

 

마이바티스 버전에 따른건지 왜 그런지는 모르겠지만.. 둘 중 아무거나 하나 쓰면 될 것 같다..

 

 

728x90
반응형