티스토리 뷰
Spring JDBC Template - Query statement
API 읽기를 생활 화 하세요!! ( 나도 영어 못해.. )
http://docs.spring.io/spring/docs/3.2.9.BUILD-SNAPSHOT/javadoc-api/
1. QueryForInt - 쿼리를 통해 수치 값을 반환 받을 때 사용
게시판 DB에서 게시판 글의 글의 개수를 가져오는 쿼리입니다. (오타...board = bbs)
위 소스는 자바에서 사용했던 것인데 직접 Connection을 구현하고, Connection 을 통해서
쿼리를 날리고 그 결과 값을 rs에 저장하여, rs의 저장된 값을 리턴하는 형태 입니다.
리턴하는 소스 외에도, close() 와 예외 처리 등의 소스코드가 더 추가 됩니다.
스프링에서 jdbcTemplate을 사용해서, 쿼리를 날리면 스프링 자체에서 예외 처리도 진행하고, 쿼리도 위와 같이 간결하게 사용할 수 있습니다.
2. query
복수의 레코드를 읽어 오기 위해서 API 의 query 중 하나를 사용해 보겠습니다.
저는 지금 게시판에서 글을 읽어오기 위해 쿼리를 사용할 것 입니다.
jdbcTemplate.query(...) 문의 리턴 값은 List 입니다. 원래 소스를 List 로 변경해도 되지만
귀차니즘이 발동하였으므로, List 를 부모로 갖는 ArrayList 로 DownCasting 하여 사용하겠습니다. ;) - 문제가 있었으면 List로 바꾸었겟죠!?
여기서 query 의 세 번째 인수는 RowMapper 입니다!! API를 꼭 읽어 보세요
RowMapper 인터페이스는 mapRow(ResultSet rs, int rowNum) 함수를 하나 가지고 있습니다. 스프링에서 자동으로 쿼리를 통해 레코드의 개수를 파악하여, 반복하여 List에 저장한답니다!! ( 오오 신세계!!!! ) 기존의 사용하던 소스에 비해 대폭 라인의 수가 줄어듭니다!!
RowMapper 를 Implements한 클래스 를 보여드리겠습니다!!
ResultSet을 직접 구현하여서 하나하나 대입하여 넣었던 문과 별 다르지 않지만,
인수로 사용하기 위해서 RowMapper로 확장하여 사용한 것 입니다.
스프링의 똑똑한 처리를 사용하기 위해서 번거롭더라도 Class를 따로 만드는 것이 좋습니다. 직접 query의 인수 자리에 위 소스를 모두 입력해도 되지만, 가독성을 위해 추천하지 않습니다.
쿼리로 넘어 올 때 필요한 값에 따라서 RowMapper를 작성하면 성능에 좋습니다.
예를 들어, 목록, 자세한 내용, 수정, 답글 용 등등 DB에서 가져오는 테이블은 같지만
필요로 하는 속성들이 조금씩 다르기 때문에 이에 따른 RowMapper를 따로 작성해주시면 좋습니다. RowMapperForList, RowMapperForContent ...
3. queryForObject - 문자열이나 날짜 형을 반환 받을 때
인수의 첫째 값은 쿼리, 둘째는 리턴 타입, 셋째 는 ? 에 심을 값입니다.
4. queryForList
List 의 형태로 레코드의 정보를 읽어옵니다.
조건에 따라 여러 값이 List 형태로 반환 될 수 있습니다.
국가 공공 기간에서는 JDBC Template 을 사용하지 않습니다. 실무에서는 Mybatis를 사용하지요.
Mybatis 를 사용하면 JDBC Template 을 쓰지 않아요~!
'생활코딩 > Spring' 카테고리의 다른 글
스프링 - 파일 다운로드 (0) | 2014.03.04 |
---|---|
스프링 배우기 - Bean Factory (0) | 2014.03.03 |
스프링 배우기 - pom.xml , JDBC Template (1) (0) | 2014.03.03 |
스프링 배우기 - JSON 처리 (1) | 2014.03.03 |
스프링 배우기 - 파일 업로드 (1) | 2014.03.03 |
- Total
- Today
- Yesterday
- learning javascript
- 브라우저 콘솔
- 초대장
- AngularJS
- static resources
- bootstrap
- 오프라인 확인
- telegram bot
- Spring
- Excel
- AOP
- 한성키보드
- mybatipse
- 스프링 부트
- offline.js
- Spring Boot
- @Temporal
- 자바스크립트
- log4jdbc
- jQuery 삽입
- jsonify
- java
- spring jpa
- GO1104 LED
- 정적 파일
- @Access
- WYSIWYG
- summernote
- 쿼리 로그
- RollingFileAppender
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |