분류 전체보기 138

MyBatis/iBatis] 방금 INSERT 된 Key 가져오기

여러 테이블에 insert를 해야되는데, 방금 insert 된 그 PK를 다른테이블에서 써야할 때... select를 해올수도 없고 그럴땐??? 1. MyBatis /* query */ id가 autoincrement인 PK일 경우, 여기서 insert 된 행의 id 값을 가져오게 된다. 그 id값은 DataClass에 선언되어있는 id 필드 안으로 값이 저절로 들어간다. java단에서 DataClass 객체의 id값을 보면 값이 들어있을 것이다. 2. iBatis /* query */ SELECT LAST_INSERT_ID() id 값을 리턴 받는 곳은 DAO 클래스에서 insert문을 호출하는 구문에서 값을 리턴 받으면 된다. int id = commonDB.insert(NAMESPACE + "ins..

개발/Database 2012.09.05

프로젝트의 모든 URI 가져오기

URI Logger 관리 때문에, 프로젝트 내의 모든 URI를 가져와야 했다. @RequestMapping 어노테이션에 써놓았던 URI를 가져오려면....거기 있는 URI들을 매핑해서 관리하는 클래스가 있다. @Autowiredprivate ApplicationContext ac; .... RequestMappingHandlerMapping mapping = ac.getBean(RequestMappingHandlerMapping.class); Map map = mapping.getHandlerMethods(); Application Context가 가지고 있는 bean중에 RequestMappingHandlerMapping 클래스가 uri 정보를 들고 있다. 위 소스 처럼 map으로 저장해놓고,Key 안..

개발/Spring 2012.09.04

Cookie에 값이 안들어가지는 것

컨트롤러에서 쿠키에 값을 집어넣으려고 response.addCookie(쿠키이름, 값); 을 해도 JSESSION만 생길뿐, 내가 설정한 쿠키이름으로 set이 되지 않았다. * JSESSION이란 - 클라이언트가 서버에게 요청을 보낼 때, 어떤 클라이언트인지 식별하게 해주는 것 이다. 서버에서 기본적으로 생성해주며, 값은 유일한 값으로 해시코드로 들어있다. 스프링에서는 컨트롤러에 저런식으로 쿠키를 넣는것이 안된다고함. 대신 인터셉터에서는 사용가능 함. 듣기로는 컨트롤러에서 domain, path 설정을 하면 돌아간다고 하는데 그래도 안되는 것 같고, 그래서 결국 CookieGenerator 클래스를 이용해서 CookieGenerator cg = new CookieGenerator(); cg.setCook..

개발/Spring 2012.08.28

@Data annotation이 작동 안할 때 (lombok)

java에서 getter, setter를 일일이 생성하지 않고도 lombok 라이브러리의 @Data 어노테이션을 선언하고 필드를 선언하면 각 필드의 게터 세터가 자동으로 생성이 된다. 그런데, outline을 확인해보면 get, set이 안되어있는 경우가 있다. 그럴 때는 해당 라이브러리인 lombok이 있는 디렉토리로 들어가 실행을 한다. 그러면 이클립스가 나타나고 install/update 버튼을 누른다. parameter를 추가하라고 나올 것이다. 그러면 eclipse.ini 또는 STS.ini (나는 스프링을 쓰므로) 를 열어서 -javaaget:lombok.jar -Xbootclasspath/a:lombok.jar 를 추가한 후 이클립스를 다시 켠다. 그래도 안되면 .class 파일을 다시 떨구..

개발/Spring 2012.08.28

MyBatis] 쿼리에서 특정 문자 제거 (if 사용시)

쿼리를 쓸 때 조건절을 동적으로 사용하는 경우가 많다. 그럴 때 문제가 되는게 연산자나 콤마의 제거이다. 그럴 때는 Mybatis의 trim 을 쓰면 된다. 두가지의 예를 들어보겠다. 1. 맨 끝에 있는 콤마(,)를 제거하는 경우 UPDATE AUTHORusername=#{username},password=#{password},email=#{email},bio=#{bio},WHERE id=#{id} 맨앞에 SET을 붙이고 if안에 무엇이 들어가도 맨 끝에 있는 콤마를 지우겠다는 것이다. 2. 맨 앞에 있는 연산자를(AND 또는 OR) 제거하는 경우 SELECT * FROM AUTHOR OR password=#{password}

개발/Database 2012.08.28

MySql] Insert Select 문

INSERT table1 (id, name, status, date) SELECT id, name, 'GOOD', now() /* id, name은 셀렉트된 값이고, 나머지 값은 임의로 넣은것 */ FROM table2 /* insert 의 테이블과 같아도 상관 없다 */ WHERE id=3 HAVING COUNT(*)=0 INSERT SELECT문을 한문장으로 정의하면 SELECT 된 값을 INSERT에 있는 테이블에 삽입하는 것이다. 먼저 SELECT 문을 보자. table2 라는 테이블에서 id가 3인 데이터가 있는지 없는지 검사하고 그 데이터가 몇개인가 검사해서 0개라면 SELECT 옆에있는 값들을 table1에 INSERT 한다.

개발/Database 2012.08.28

Spirng Batch 로 Batch Job 만들기 (2)

저번 글에 이어서.. batch 프로젝트에서 소스가 잘 돌아가는지 보는 방법임. batch는 서버 필요없이 콘솔에서 로그를 보면 된다. 방법 GOGO! 1. run을 어떻게 할건지 설정한다. 프로젝트에서 우클릭 - Run As - Run Configurations... 2. 창이 뜰 것임. 좌측 Java Application - New를 누른다. 3. 위쪽에 Name을 정해주고 Project에는 project 이름 쓰고,Main Class 는캡쳐되있는 저 클래스 그대로 쓰면 된다. 4. Arguments 탭을 누르고 job.xml이 있는 위치, job 이름, -next 옵션을 붙이고밑에 짤렸는데 Run 버튼 누르면 로그들이 콘솔에 뜰 것이다.-next 옵션은 왜붙이는지는 잘 모름. VM arguments..

개발/Spring Batch 2012.08.17