Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
Tags
- 예제
- Java
- JavaScript #인라인 #인터널 #익스터널 #데이터입출력
- Java #Web #공부 #복습 #Servlet #서블릿 #포워드 #sendRedirect #dispatcher
- JavaScript #자바스크립트 #복습 #배열 #Array
- 데이터매핑
- JavaScript #선언적함수 #익명함수 #화살표함수 #함수선언방법 #복습
- 어노테이션
- fremework
- 스프링
- Java #자바 #인터페이스 #implements #다형성 #interface #복습 #정리 #나만의공부
- 동적sql
- 특징및기본구조
- Spring
- 페이징처리예제
- JavaScript #예제 #복습 #Web #웹 #개발자가되고파ㅜㅜ
- 정리
- 프레임워크
- 데이터베이스 #DataBase #Oracle #DB #DataBase개요
- 복습
- JavaScript #자바스크립트 #선택자 #HTML태그접근 #JS
- 데이터조회예제
- Java #JDBC #Mybatis #동적SQL
- mybatis자료형 #참고자료
- List데이터조회
- springframework
- Java #자바 #초보개발자 #다형성 #동적바인딩 #instanceof #학습 #요약정리 #복습
- 서블릿기초 #servlet #java #webprogramming
- WEB
- mybatis
Archives
- Today
- Total
개발군싹
3-3) mybatis-#{} 과 ${}의 차이 본문
⭐ type에 따른 keyword 검색 결과를 가져올 때 -mapper에서 WHERE조건문
<form action="${pageContext.request.contextPath }/emp/searchemp.do" method="get">
<table>
<tr>
<td>
<select name="type">
<option value="emp_id">사원번호</option>
<option value="emp_name">사원이름</option>
<option value="email">이메일</option>
<option value="phone">전화번호</option>
</select>
</td>
<td>
<input type="text" name="keyword" placeholder="검색어입력"/>
<input type="submit" value="검색"/>
</td>
</tr>
</table>
</form>
➡️ type과 keyword를 Servlet에서 getParameter()로 데이터를 가져오고 Map으로 -mapper.xml에서 #{}으로 접근 시 데이터 값이 제대로 전달되지 않았다.
<select id="searchEmployeeByKeyword" parameterType="map" resultMap="employeeMap">
SELECT *
FROM EMPLOYEE
WHERE ${type} LIKE '%'||#{keyword}||'%'
<!--
WEHRE #{type} LIKE '%'||#{keyword}||'%'
=> WHERE 'emp_id' LIKE '%'||'안녕'||'%' (X)
-->
</select>
위 코드 작성과 같이 출력 시 mybatis는 정상적으로 작동되나 결과값이 출력되지 않음,
why? #{ } 사용 시 type값에 ‘ ’ 붙어서 출력 되므로 컬럼으로 인식 X
sol) ${ } 를 이용해서 table name or column name의 값으로 사용한다.
why❓ #{}과 ${}의 차이점을 알아봐야한다.
⭐ 파라미터값을 불러올 때 사용하는 표현식
#{ } : 데이터 타입에 맞춰 리터럴로 표시해주는 표현식
- setString, setInt, setDate …
⇒ 파라미터가 String 형태로 들어와 자동으로 파라미터 형태가 된다.
⇒ ex. #{type}의 type값이 emp_id 이다. ↔ type=’emp_id’가 된다.
${ } : 문자로 표현해주는 표현식
- jsp에서 넘어오는 데이터의 key = value ⇒ type = “emp_id” 일 때,
#{type} : ‘emp_id’
&{type} : emp_id
⇒ 파라미터가 바로 출력된다.
⇒ 컬럼의 자료형에 맞추어 파라미터의 자료형이 변경
⇒ 테이블이나 커럼명을 파라미터로 전달하고 싶을 때 사용 ; #{ }는 자동으로 ‘ ‘ 이 붙어서 출력되므로 이 경우 사용할 수 없다. ${ } 를 사용.
'Mybatis' 카테고리의 다른 글
| Mybatis - TypeHandler 설정 (1) | 2023.12.04 |
|---|---|
| 4) mybatis를 이용한 동적 SQL (if,where,trim) (1) | 2023.12.04 |
| 3-2) mybatis에서 페이징 처리 (1) | 2023.12.04 |
| 3-1) mybatis 데이터 조회(Map / DTO를 이용하지 않고 조회하기) (0) | 2023.12.04 |
| 3) mybatis 데이터 조회(List) (0) | 2023.12.04 |