일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 트랜잭션
- SonarQube
- ElasticSearch
- orm
- 자바
- 엘라스틱서치
- Apach
- 아파치
- mybatis
- Git
- 마이바티스
- Gradle
- Java
- nodejs
- 시스템운영
- 레드마인
- slave node
- JVM
- heap메모리
- Stash
- npm
- 스프링
- 리눅스
- spring
- mysql
- springboot
- DB
- Elk
- Bitbucket
- sql
- Today
- Total
프로그래머호이잇
Mabatis <where> 의미 본문
<select id="findActiveBlogLike"
resultType="Blog">
SELECT * FROM BLOG
<where>
<if test="state != null">
state = #{state}
</if>
<if test="title != null">
AND title like #{title}
</if>
<if test="author != null and author.name != null">
AND author_name like #{author.name}
</if>
</where>
</select>
<where> 을 쓰지 않고 where로 쓴다면
<select id="findActiveBlogLike"
resultType="Blog">
SELECT * FROM BLOG
where
<if test="state != null">
state = #{state}
</if>
<if test="title != null">
AND title like #{title}
</if>
<if test="author != null and author.name != null">
AND author_name like #{author.name}
</if>
</select>
위와 같이 될 겁니다. 이렇게 되면 어떤 문제가 발생하냐..
if 절이 모두 실행 되지 않는다면 sql 문장이
SELECT * FROM BLOG
where
위와 같이 되서 에러가 발생합니다..ㅠㅠ
그리고 첫번쨰 if 절이 실행이 되지 않는다면..
SELECT * FROM BLOG
where
AND title like #{title}
where 후 AND 로 시작하게 됩니다.
이러한 부분을 방지하여 주는 것이 <where> 입니다 AND 나 OR 로 시작하면 지워주고 where 뒤에 아무것도 없다면 where자체를 만들어 주지 않는 역할을 한다네요~
'java' 카테고리의 다른 글
Mybatis #과 $ 차이 (0) | 2019.08.28 |
---|---|
jvm 메모리 관련 내용 (0) | 2019.08.26 |
@param 사용이유 (0) | 2017.10.25 |
@Transactional 사용 이유 (0) | 2017.10.25 |
Insterceptor 와 filter 차이 (0) | 2017.10.25 |