데이터베이스 SQL문장을
실행하기
위한 DAO클래스를
만들어
보자.
우선 BoardDAO라는
인터페이스를
만든
후
이를
구현한 SpringBoardDAO를
만들자. SpringBoardDAO는 configBoard.xml 파일에서
빈으로
등록되어
스프링
프레임워크가
기동될
때 WebApplicationContext에
의해
boardDAO라는
이름의
빈으로
등록되어
서비스
된다.:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office"
/>
BoardDAO 인터페이스
에서는
게시판
리스트
보기를
위한 boardList()만
정의한다.
[BoardDAO.java]
package onj.board.dao;
import java.util.List;
import
onj.board.model.BoardDTO;
import
org.springframework.dao.DataAccessException;
public interface BoardDAO
{
public
List<BoardDTO> boardList() throws
DataAccessException;
}
아래 SpringBoardDAO에서 setDataSource를
통해 DataSource를
세터주입
받는데
boardConfig.xml의
다음
구문에
의해
주입
받는다.
(property의 name값에
대한 set method가
있어야
하는데
SpringBoardDAO에 setDataSource 메소드가
정의되어
있어야
한다.)
<bean id="boardDAO"
class="onj.board.dao.SpringBoardDAO">
<property
name="dataSource">
<ref bean="dataSource"/>
</property>
</bean>
Spring DI중
하나인
세터주입(Setter Inject)에
대해서는
다음
URL을
참고하자.
http://www.onjprogramming.co.kr/oraclejavanew/oraclejava/bbs/board.php?bo_table=LecSpring&wr_id=193&page=3
jdbcTemplate객체의 query 명령문에
의해 SELECT문장을
실행하며
인자로
넘겨
준 RowMapper의 maprow 구현에
의해
실행된
결과를
한
건씩
BoardDTO에
담으며
최종
결과물을 boardList에
담아서
리턴해
준다. 즉
모든
게시물을
읽기
위해서 new RowMapper()에서 mapRow를
구현
한
것이다.
다음은
전체
소스코드이다.
[SpringBoardDAO.java]
package onj.board.dao;
import
java.sql.ResultSet;
import
java.sql.SQLException;
import java.util.List;
import
javax.sql.DataSource;
import
onj.board.model.BoardDTO;
import
org.springframework.dao.DataAccessException;
import
org.springframework.jdbc.core.JdbcTemplate;
import
org.springframework.jdbc.core.RowMapper;
public class SpringBoardDAO implements BoardDAO
{
private
JdbcTemplate jdbcTemplate;
public void
setDataSource(DataSource dataSource){
this.jdbcTemplate = new
JdbcTemplate(dataSource);
}
@Override
public
List<BoardDTO> boardList() throws DataAccessException
{
List<BoardDTO> boardList = null;
String sql = "select * from board";
boardList = jdbcTemplate.query(sql,
new RowMapper()
{
public Object mapRow(ResultSet rs, int rowNum) throws SQLException
{
BoardDTO
board = new BoardDTO();
board.setSeq(rs.getInt("seq"));
board.setName(rs.getString("name"));
board.setPasswd(rs.getString("passwd"));
board.setTitle(rs.getString("title"));
board.setContent(rs.getString("content"));
board.setFileName(rs.getString("filename"));
board.setDate(rs.getString("regdate"));
board.setReadCount(rs.getInt("readcount"));
board.setReply(rs.getInt("reply"));
board.setReply_step(rs.getInt("reply_step"));
board.setReply_level(rs.getInt("reply_level"));
return
board;
}
});
return boardList;
}
}
오라클자바커뮤니티에서 운영, 개발자 전문교육, 개인80%환급 오엔제이프로그래밍실무교육센터(www.onjprogramming.co.kr)
평일주간(9:30~18:30) 개강
(4/07)[기업100%환급]SQL기초에서 Schema Object까지
(4/07)[기업100%환급]자바기초에서 JDBC, Servlet/JSP까지
(4/14)C#4.0,ADO.NET,Network 프로그래밍
(4/14)[기업100%환급]Spring ,MyBatis,Hibernate실무과정
(4/14)[기업100%환급]PL/SQL,ORACLE HINT,TUNING
평일야간(19:00~22:00) 개강
(4/01)안드로이드개발자과정
(4/04)웹퍼블리싱 마스터
(4/04)자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지
(4/04)C#,ASP.NET마스터
(4/07)SQL초보에서실전전문가까지
(4/08)Spring3.X, MyBatis, Hibernate실무과정
주말(10:00~18:00) 개강
(4/05)웹퍼블리싱 마스터
(4/05)닷넷실무자를위한WPF개발자과정
(4/05)Spring3.X, MyBatis, Hibernate실무과정
(4/05)SQL초보에서실전전문가까지
(4/12)C#,ASP.NET마스터
(4/12)안드로이드개발자과정
(4/12)JAVA기초에서실무까지
댓글 없음:
댓글 쓰기