본문 바로가기

Java, Spring

(77)
20일차 3 Paging 2 쿼리문을 boardQuery.xml에 적용해야지. INSERT INTO board(seq, title, name, password, content) VALUES(boardseq.nextval, #title#,#name#, #password#, #content#) SELECT seq, title, name, writeday, readcount, content FROM board WHERE seq = #seq# UPDATE board SET title=#title#, name=#name#, content=#content# WHERE seq=#seq# AND password=#password# UPDATE board SET readcount = readcount+1 WHERE seq = #se..
18일차 1 - Spring JDBC, Connection Pool BoardDao를 new방식으로 생성하지 않고, bean으로 만든 후 Dependency Injection처리했으니 이제.. springboard에 Spring JDBC적용해보자. 먼저 dataSource만들고 BoardDao는 JdbcDaoSupport를 상속받게해. import org.springframework.jdbc.core.support.JdbcDaoSupport; public class BoardDao extends JdbcDaoSupport { //생략 그러면 dataSource를 BoardDao에 주입시킬 수 있어. . . . . 그러면 이제 BoardDao에서 Connection, PreparedStatement, ResultSet, getConnection(), dbClose()등은 ..
18일차 2 - iBatis iBatis sprigboard와 같은 springibatisboard를 만들고 ibatis로 수정해보자. downloads\spring-framework-2.5.6.SEC01\lib\ibatis\ibatis-2.3.4.726.jar 를 /springibatisboard/WebContent/WEB-INF/lib에 드로그앤드롭. iBatis 원래 apache그룹에서 만든거야. 옛날 자바는 라이센스 신경안썼는데 sun사가 오라클에 팔린 이후 상업적으로 변해. 그리고 공개소프트쪽에 영향력을 발휘하려고 하다보니 iBatis가 짜증나서 apache그룹을 나와 google로 옮기면서 이름을 myBatis로 바꿨어. (http://blog.mybatis.org/) spring 2.x에서는 dist는 spring에서 ..
18일차 3 나머지도 iBatis로 변경해보자. Insert public boolean insertBoard(BoardDto boardDto){ try { QueryHandler.insertBoard(boardDto); //insert는 에러나면 예외처리로 빠지겠지. return true; } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); return false; } } package ibatis; import java.io.IOException; import java.io.Reader; import java.sql.SQLException; import java.util.List; import board.model.Bo..
18일차 4 iBatis의 다른 기능 알아보자. iBATIS-SqlMaps-2_ko.pdf, iBATIS-SqlMaps-2-Tutorial_ko.pdf 참고. . . . resultMap Dto와 Database Column명이 일치하지 않을 경우 mapping시키기 위함. 우리는 일치하지만 test를 위해 일부러 title을 subject로 해본거지. 주의! column갯수가 일치해야해. resultMap에서는 남는 column이 있으면 에러나.. 그런데 이 resultMap을 다른 곳(예를 들어 getView)에서도 써야 한다면 Map을 여러 개 만드는것 보다 차라리 getList에서도 그냥 가상으로 컬럼을 만들어 주는게 좋겠지. (getView에서는 content필요없지만 그냥 받는거지) . . . cacheM..
18일차 5 iBatis Connection Polling, JNDI등으로 바꿔볼거야. Connection Pooing 먼저 library 설치해야해. sw\spring-framework-2.5.6.SEC01\lib\jakarta-commons\commons-pool.jar sw\spring-framework-2.5.6.SEC01\lib\jakarta-commons\commons-dbcp.jar sw\spring-framework-2.5.6.SEC01\lib\jakarta-commons\commons-collections.jar 세 개 파일을 /springibatisboard/WebContent/WEB-INF/lib에 드로그앤드롭 잘 실행됨을 확인. . . . 이렇게 자체의 라이브러리로 Connection Pool상..
17일차 1 지난번에 만든 프로그램에서 source.jsp도 Model2로 변경해보자. 먼저 이것도 dispatcher-servlet에 등록시켜야지. package test; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.AbstractController; public class Form extends AbstractController{ @Override protected ModelAndView handleRequestIntern..
17일차 2 . . . 전에서 Form의 경우 아무것도 처리하는 부분없이 단지 모델2형태로 그냥 view를 띄울 뿐이야. 이럴경우 그냥 jsp로 실행해도 큰 문제는 없어. 이런경우 굳이 controller를 만들 필요없이 Spring에서 제공하는 클래스ParameterizableViewController를 사용해 볼 수 있겠지. . . . Calendar 클래스를 사용하여 현재시간을 찍어보자. package test; import java.util.Calendar; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.ModelAndVi..