개발공작소
article thumbnail
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
profile

개발공작소

@모찌바라기

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!