지난주 주말내내는 몸이 좋지 않아서 포스팅은 전혀 하지 못하였음..
이번 포스팅에는 쿼리문의 LIKE 절을 DBMS별로 비교 하려함.
IBATIS / MYBATIS의 차이는 #XXX# / #{XXX} 의 차이뿐이고 솔직히 문법은 동일함
ORACLE LIKE 절
- ibatis
WHERE(AND) column LIKE '%'||#search_value#||'%'
- mybatis
WHERE(AND) coumn LIKE '%'||#{search_value}||'%'
MS-SQL LIKE 절
- ibatis
WHERE(AND) column LIKE '%'+#search_value#+'%'
- mybatis
WHERE(AND) column LIKE '%'+#{search_value}+'%'
MySQL LIKE절
- ibatis
WHERE(AND) column LIKE CONCAT('%',#search_value#,'%')
- mybatis
WHERE(AND) column LIKE CONCAT('%',#{search_value},'%')
위와같이 주로 쓰이는 DBMS 별로 예제를 들어보았음.
도움이 되셨다면 공감클릭! 궁금하신점은 댓글!!
mybatis - INSERT 후 시퀀스값 SELECT하기(MySQL,MS-SQL,ORACLE) (0) | 2014.09.03 |
---|---|
ibatis vs mybatis 조건문 + mybatis 공백조건 비교시 안될경우 및 두개이상 조건주기 (0) | 2014.08.01 |
ibatis(iterate) vs mybatis(foreach) 비교 샘플 (0) | 2014.07.31 |
ibatis(mybatis) 쿼리 xml을 작성할때 조건문이 필요할 경우가 생긴다.
ibatis(mybatis)의 장점은 조건을 주면서 동적쿼리를 생성할수 있다는 장점이 있다.
즉, 프로시저를 사용하지 않아도 어느정도의 출력이 가능하다는 이야기임.
다음과 같은 테이블이 있다고 가정하자
- board
id |
int |
title |
varchar |
content |
text |
create_id |
varchar |
update_id |
varchar |
위의 기준으로 생성된 테이블에서 예를들기 위해 몇가지 조건에 따라 비교를 하도록 하겠음
1. update_id null/not null 체크 조건문
- ibatis(isNull / isNotNull)
<isNull property="update_id"> 조건절 </isNull> <isNotNull property="update_id"> 조건절 </isNotNull>
-mybatis(if / choose when otherwise)
<if test="update_id == null"> 조건절 </if> <if test="update_id != null"> 조건절 </if>또는
<choose> <when test="update_id == null"> null 조건절 </when> <otherwise> not null 조건절 </otherwise> </choose>
2. update_id 공백유무 체크 조건문
- ibatis(isEmpty / isNotEmpty)
<isEmpty property="update_id"> 조건절 </isEmpty> <isNotEmpty property="update_id"> 조건절 </isNotEmpty>
-mybatis(if / choose when otherwise)
<if test="update_id == ''"> 조건절 </if> <if test="update_id != ''"> 조건절 </if>또는
<choose> <when test="update_id == ''"> 공백일경우 조건절 </when> <otherwise> 공백 아닐경우 조건절 </otherwise> </choose>
mybatis의 공백조건 체크를 위와같이 조건을 주었는데도 체크가 되지 않을 경우에
하단 내용 처럼
쌍따옴표("") -> 홑따옴표('') and 홑따옴표('') -> 쌍따옴표("")로 변경을 해주자
문자열쪽에서 문제가 발생하는거 같음
3. id(숫자) 비교체크 조건문
- ibatis(isGreaterThan/isGreaterEqual/isLessThan/isLessEqual)
<isGreaterThan property="id" compareValue="3"> 3보다 크다 </isGreaterThan> <isGreaterEqual property="id" compareValue="3"> 3보다 크거나 같다 </isGreaterEqual> <isLessThan property="id" compareValue="3"> 3보다 작다 </isLessThan> <isLessEqual property="id" compareValue="3"> 3보다 작거나 같다 </isLessEqual>
- mybatis(if/choose when otherwise)
<if test='id > 3'> 3보다 크다 </if> <if test='id >= 3'> 3보다 크거나 같다 </if> <if test='id < 3'> 3보다 작다 </if> <if test='id <= 3'> 3보다 작거나 같다 </if>또는
<choose> <when test='id > 3'> 3보다 크다 </when> <when test='id == 3'> 3이다 </when> <when test='id < 3'> 3보다 작다 </when> </choose>
4. 검색 조건 선택후 검색버튼 클릭했을경우라고 가정
(문자열) 비교체크 조건문
- ibatis(isEqual / isNotEqual + compareValue)
<isEqual property="search_key" compareValue="title"> 조건절 </isEqual> <isNotEqual property="search_key" compareValue="content"> 조건절 </isNotEqual>
- mybatis는 공백조건의 경우와 동일하므로 생략
위와같이 비교를 들 수 있을 것이다.
본인의 생각으로
ibatis는 일일이 태그를 조건문 갯수에 따라 추가를 해줘야 하는 번거로움이 있는 반면,
mybatis는 JSTL처럼 일반적인 방식으로 사용을 해줄수 있어 라인수도 줄고 동적쿼리 작성하는데 코드작성이 좀더 수월한거 같다.
※ 만약 하나 이상의 조건을 mybatis에서 줄경우
&& = and
|| = or
로 하여서 여러개의 property로 비교가 가능하다.
도움이 되셨다면 공감클릭! 궁금하신점은 댓글!!
mybatis - INSERT 후 시퀀스값 SELECT하기(MySQL,MS-SQL,ORACLE) (0) | 2014.09.03 |
---|---|
ibatis vs mybatis LIKE절 검색하기 (0) | 2014.08.04 |
ibatis(iterate) vs mybatis(foreach) 비교 샘플 (0) | 2014.07.31 |
ibatis(mybatis) 쿼리 xml을 작성할때 반복문이 필요할 경우가 생긴다.
흔히 in 조건절을 구현할때 주로 사용한다
예를들어 쿼리가
SELECT id,title,content FROM table_name WHERE id in (1,2,3)
와 같은 쿼리로 예를 들도록 하겠다.
parameter 타입은 private ArrayList<Integer> idList 변수로 받아왔다고 가정하자
그렇다면 각각의 쿼리 xml에 들어갈 태그는 다음과 같다.
- ibatis(iterate)
SELECT id,title,content FROM table_name WHERE id in <iterate property="idList" open="(" close=")" conjunction=","> #idList[]# </iterate>
-mybatis(foreach)
SELECT id,title,content FROM table_name WHERE id in <foreach item="item" index="index" collection="idList" open="(" separator="," close=")"> #{item} </foreach>
위와같이 비교를 들 수 있을 것이다.
mybatis 태그들의 문법은 거의 jstl의 문법과 비슷하다고 볼수 있다.
도움이 되셨다면 공감클릭! 궁금하신점은 댓글!!
mybatis - INSERT 후 시퀀스값 SELECT하기(MySQL,MS-SQL,ORACLE) (0) | 2014.09.03 |
---|---|
ibatis vs mybatis LIKE절 검색하기 (0) | 2014.08.04 |
ibatis vs mybatis 조건문 + mybatis 공백조건 비교시 안될경우 및 두개이상 조건주기 (0) | 2014.08.01 |
특정 xml파일이나 txt파일 등과 같은 리소스 파일들을 class부분에서 읽어와야 하는 일이 존재
하였다.
기존에는 D:\abc\ddd.txt 형식처럼 외부에 파일을 위치시키고 properties 파일에 경로를 지정한후 파일을 읽어왔는데 너무 번거롭다.
그래서 해결책을 찾아본 결과 spring에서는
import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource;
위 클래스를 이용하여 classpath안에 존재하는 파일의 정보를 가지고 올 수 있었다.
실행방법은 이렇다. 다음과 같은 임의의 파일을 calsspath 영역내에 위치 시키자.
본인은 test.txt라는 파일을 classpath에 위치시킴
그리고 다음과 같이 샘플구현을 하여 파일정보일부를 확인해 보았음
Resource resource = new ClassPathResource("test.txt"); System.out.println("파일사이즈::"+resource.getFile().length()); System.out.println("파일절대경로+파일명:"+resource.getURI().getPath().substring(1));
실행결과 콘솔내용
다음과같은 내용이 콘솔에 찍혔다.
그외의 작업들도 많은대 나머지는 여러분들의 몫~
도움이 되셨다면 공감클릭! 궁금하신점은 댓글!!
스프링3(spring3) 을 이용하여 간단 스케쥴러 세팅을 하도록 하자 (8) | 2014.09.20 |
---|---|
zxing 라이브러리를 이용하여 QR코드/큐알코드/바코드 이미지를 색상별로 생성해보도록 하자 (0) | 2014.08.29 |
스프링3(Spring3) - 메이븐(maven) pom.xml에서 오라클 JDBC(ojdbc14.jar) 라이브러리 추가하기 (0) | 2014.07.30 |
스프링3(Spring3) - RedirectAttributes를 이용하여 리다이렉트 POST 방식으로 데이터 전송하기 (0) | 2014.07.30 |
스프링3(Spring3) - @ResponseBody + jackson을 이용하여 심플하게 JSON 구현하기 (0) | 2014.07.30 |
maven repository에서 ojdbc 검색을 해서 dependency를 추가해주었는데
Missing artifact ojdbc:ojdbc:jar:14 라는 오류발생
삽입했던 dependency
<dependency> <groupId>ojdbc</groupId> <artifactId>ojdbc</artifactId> <version>14</version> </dependency>
뭘까 하다 확인해보니 다음과같이 해주어야 하더라
<dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc14</artifactId> <version>10.2.0.4.0</version> </dependency>
기존 dependency를 위와같이 변경해주고 repositories태그를 추가해주어야 함
pom.xml에 repositories 태그가 존재하지 않는다면 그냥 properties 태그위에 다음과 같이 작성
해주도록 하자
<repositories> <repository> <id>mesir-repo</id> <url>http://mesir.googlecode.com/svn/trunk/mavenrepo</url> </repository> </repositories>
위와 같이 변경하였다면 정상적으로 ojdbc14.jar 라이브러리가 정상적으로 추가된것을
확인할 수 있을 것이다.
다음에는 mssql 라이브러리를 추가하는법을 포스팅 하도록 하겠음!!
도움이 되셨다면 공감클릭! 궁금하신점은 댓글!!
zxing 라이브러리를 이용하여 QR코드/큐알코드/바코드 이미지를 색상별로 생성해보도록 하자 (0) | 2014.08.29 |
---|---|
class파일내에서 classpath에 존재하는 리소스 파일읽어오기 (0) | 2014.07.30 |
스프링3(Spring3) - RedirectAttributes를 이용하여 리다이렉트 POST 방식으로 데이터 전송하기 (0) | 2014.07.30 |
스프링3(Spring3) - @ResponseBody + jackson을 이용하여 심플하게 JSON 구현하기 (0) | 2014.07.30 |
스프링3(Spring3) - 인터셉터(interceptor) 설정 (4) | 2014.07.28 |