mybatis에서 조건문 쓰는 것은 간단하다.

if나 when을 써주면 된다.


if문


when문 


test에 조건내용을 써주면 되는데 연산문은 일반적이다.


==, eq, !=, or, and 뭐 이런식으로 써주면 된다.


그렇다면 반복문은 어떻게 할 것인가?


예를들어 query의 where절에 in을 쓰고 싶다.


회원아이디들을 여러개 조회해와서 그 아이디가 있는 데이터만 가져오고 싶은 것이다.


요런 쿼리가 있다고 치자. 물론 서브쿼리로 간단히 할수 있다


select * from tblEventJoiner where event_no=#{event_no} and userid in (select userid from tblMember where smsyn = 'Y')


그런데 서브쿼리를 썼더니 시간이 너무 많이 걸린다. (물론 저런 간단한 쿼리에서는 걸리지않는다. 조인이 네다섯개 이상 걸린 경우)


프로시져를 짜도 되지만...이게 귀찮다면 다음과 같이 해보자.


1. 우선 SMS수신동의자 회원을 가져온다. (query.xml)


2. DAO부분에서 이 리스트를 받아 다시 query를 조회한다. (eventDAO.java)


3. 다시 query.xml로 돌아가서 받아온 회원아이디 리스트로 where절에 in을 넣어보자




- The END -

기본 환경은 Weblogic, Apache, Oracle, Spring, Mybatis이다.


오라클은 원래 쓰고 있었는데 MS-SQL을 연결할 일이 생겼다.


A. 우선 웹로직에 데이터 소스를 만든다.

1. 서비스>데이터소스>새로만들기

2.  드라이버클래스 이름은 weblogic.jdbc.sqlserver.SQLServerDriver

3. 나머지는 적당히...


B. 라이브러리에 sqljdbc4.jar를 추가한다. (자세한 것은 나중에 추가한다. 오래전에해서 기억이 잘...)


C. DB연결정보 셋팅

DB.Mssql.DriverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver

DB.Mssql.Url=jdbc:sqlserver://호스트주소;databaseName=DB명;instanceName=인스턴스명
DB.Mssql.UserName=아이디
DB.Mssql.Password=패스워드

보통은 url에 jdbc:sqlserver://호스트주소:1433;DatabaseName=DB명 이렇게 넣지만 인스턴스가 있을 때는 포트번호를 빼줘야한다.
우선순위가 포트번호이기때문에 포트번호가 있으면 인스턴스를 따라가지 않는다는군!!

참 웹로직에서 데이터 소스를 만들때는 URL에 jdbc:weblogic:sqlserver://호스트주소\인스턴스명:1433 이렇게 해줘야한다.

( 설정파일에도 저렇게 했다가 몇시간 삽질을 했는지...)


로그삭제하는 bat을 생성 후 작업스케줄러(task scheduler)에 걸어 놓음.


참고로 window 8 server임.


증상 : bat파일을 따로 실행했을 때는 잘 돌아가나 스케줄러에선 안돌아감. 에러도 안남. 잘 수행됬다고 나오지만 실행은 안됨.


원인 : 동작설정이 잘못 되었음.


스케줄 걸기 방법

1. 실행->taskschd.msc 실행

2. 작업만들기 실행

3. 일반탭

- 이름, 설명 넣기

- 사용자가 로그온 할 때만 실행 선택

- 가장 높은 수준의 권한으로 실행 체크

4. 트리거탭

- 새로만들기

- 원하는 스케줄로 설정

5. 동작탭

- 새로만들기

- 동작 : 프로그램시작

- (여기가 중요!) 설정>프로그램/스크립트에는 프로그램 명만 넣는다 ex: delete_log.bat

- 시작위치에 프로그램 위치를 넣는다. ex: D:\task


'기타' 카테고리의 다른 글

티스토리에 코드넣기  (0) 2019.08.30
facebook 공유링크 캐쉬 삭제  (0) 2014.06.16
SNS 링크걸기  (0) 2014.06.09
티스토리에 소스코드 넣기  (0) 2013.12.13

+ Recent posts