일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 전자정부
- 추상클래스
- 전체
- 25가지 효율적인 sql작성법
- 전체텍스트
- angular2
- Login with OAuth Authentication
- 자바 야구게임
- 업캐스팅
- 스프링
- 형변환
- 야구게임
- 단축키
- 페이징
- 다형성
- full text indexing
- jquery
- 다운캐스팅
- IBatis procedure
- while
- 상속예제
- Validations
- 상속
- 로또
- 자바
- 가변인자
- Random
- Full text
- 이클립스
- Today
- Total
nalaolla
myBatis 파라미터 바인딩시 주의점 본문
myBatis 파라미터 바인딩시 주의점
매핑구문에 파라미터를 전달할때 값 기반으로 전달한 파라미터를 사용하면 아무런 문제 없이 처리된다.
String parameterName = "value";
session.selectList("com.test.mapper.TestSql", parameterName)
이렇게 파라미터를 주고
<select id="TestSql" parameterType="String" resultType="com.test.mapping.Account">
SELECT *
FROM Account
WHERE AccountName = #{parameterName}
</select>
이렇게 매퍼를 사용하면 정상적으로 처리된다. 하지만 $를 이용해 바인딩하는 경우에는 에러가 발생한다.
<select id="TestSql" parameterType="String" resultType="com.test.mapping.Account">
SELECT *
FROM Account
WHERE ${parameterName} = '가나다'
</select>
이렇게 하면 속성을 찾을 수 없다면서 오류가 발생한다. 이러한 경우에는 문자열로 바로 파라미터를 전달하지 않고 map에 넣어서 전달한다.
Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("parameterName", "value");
session.selectList("com.test.mapper.TestSql", parameterName)
이렇게 파라미터를 전달하면
<select id="TestSql" parameterType="String" resultType="com.test.mapping.Account">
SELECT *
FROM Account
WHERE ${parameterName} = '가나다'
</select>
이러한 구문도 정상적으로 처리된다.
'MyBatis' 카테고리의 다른 글
ibatis 또는 mybatis를 통하여 취한 oracle CLOB데이터를 String으로 풀기 (0) | 2016.04.11 |
---|---|
INSERT 후 시퀀스값 SELECT하기(MySQL,MS-SQL,ORACLE) (0) | 2016.04.04 |
parameterType HashMap 관련 예시(다중파라미터) (0) | 2016.03.27 |
마이바티스(MyBatis) 쿼리 로그 출력 및 정렬하기 (0) | 2016.03.27 |
프로시저 호출하기(오라클, SqlServer) (0) | 2016.03.26 |