Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 한글깨짐
- maven연결
- 호스트/바인드 변수명이 부적합합니다
- JSP
- java로그인
- spring환경설정
- 디벨로퍼한글깨짐
- 게시판만들기
- 디벨로퍼
- sqldeveloper
- Java
- 게시판컨트롤러
- 게시판코드
- SQL
- allchecked #unchecked #체크박스 #체크박스선택삭제 #체크박스모두선택
- 라디오박스값 #Radiobox value #크롭콘솔
- Spring
- 게시판조회수기능
- 로그인코드
- 코드공부
- 조회수
- 로그인기능
- ORA-01745
- 조회수기능
- UTF-8
- 환경설정
- 코드정리
- maVen
Archives
- Today
- Total
개발자가 되고 싶은 조안나
[JAVA] 게시판 만들기 (VO/DAO) 본문
2차 프로젝트로 펜션 사이트를 만들기로 했는데
숙박 후기 게시판을 맡았다.
1차 프로젝트 때 등록만 되고, 삭제도 수정도 안되는 게시판을 만들었던걸 생각하면
나름 장족의 발전 아닌지.
VO
package review;
import cmn.DTO;
public class ReviewVO extends DTO {
/**게시글번호*/
private String seq;
/**게시글제목*/
private String title;
/**게시글조회수*/
private String read_cnt;
/**게시글내용*/
private String contents;
/**게시글작성자*/
private String reg_id;
/**게시글작성일*/
private String reg_dt;
/**예약번호*/
private String no;
private String passwd;
아쉬운 점이 있다면, 처음부터 무얼 어떻게 구현할지 생각을 하면서 했어야했는데
과정 중에 덧 붙이기를 반복하니 스스로도 정신이 없었고.
그 결과 몇가지 구현하지 못한 기능들이 있어서 아쉬움이 남는다.
DAO
package review;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import org.apache.log4j.Logger;
import cmn.ConnectionMaker;
import cmn.DTO;
import cmn.JDBCReturnReso;
import cmn.SearchVO;
import cmn.WorkDiv;
import read_cnt2.ReadCntVO2;
public class ReviewDao implements WorkDiv {
private final Logger LOG = Logger.getLogger(ReviewDao.class);
private ConnectionMaker connectionMaker;
public ReviewDao() {
connectionMaker = new ConnectionMaker();
}
@Override
public int do_insert(DTO dto) {
ReviewVO vo = (ReviewVO) dto;
int flag = 0;
Connection conn = null;
PreparedStatement pstmt = null;
try{
StringBuilder sb=new StringBuilder();
sb.append(" INSERT INTO board2 ( \n");
sb.append(" seq, \n");
sb.append(" title, \n");
sb.append(" contents, \n");
sb.append(" reg_id, \n");
sb.append(" reg_dt, \n");
sb.append(" no, \n");
sb.append(" passwd \n");
sb.append(" ) VALUES ( \n");
sb.append(" SEQ_BOARD.nextval, \n");
sb.append(" ?, \n");
sb.append(" ?, \n");
sb.append(" ?, \n");
sb.append(" SYSDATE, \n");
sb.append(" ?, \n");
sb.append(" ? \n");
sb.append(" ) \n");
LOG.debug("1.============================");
LOG.debug("1.query\n:"+sb.toString());
LOG.debug("1.============================");
conn = connectionMaker.getConnection();
LOG.debug("2.============================");
LOG.debug("1.conn\n:"+conn);
LOG.debug("1.============================");
pstmt = conn.prepareStatement(sb.toString());
pstmt.setString(1, vo.getTitle());
pstmt.setString(2, vo.getContents());
pstmt.setString(3, vo.getReg_id());
pstmt.setString(4, vo.getNo());
pstmt.setString(5, vo.getPasswd());
LOG.debug("2.============================");
LOG.debug("2.param\n:"+vo.toString());
LOG.debug("2.============================");
flag = pstmt.executeUpdate();
LOG.debug("3.============================");
LOG.debug("3.flag\n:"+flag);
LOG.debug("3.============================");
}catch(SQLException e){
LOG.debug("======================");
LOG.debug("SQLException:"+e.toString());
LOG.debug("======================");
}finally{
JDBCReturnReso.close(pstmt);
JDBCReturnReso.close(conn);
}
return flag;
}
@Override
public int do_update(DTO dto) {
ReviewVO vo= (ReviewVO) dto;
int flag = 0;
Connection conn = null;
PreparedStatement pstmt = null;
try{
conn = connectionMaker.getConnection();
LOG.debug("1.conn:"+conn);
StringBuilder sb=new StringBuilder();
sb.append(" UPDATE board2 \n");
sb.append(" SET title = ?, \n");
sb.append(" contents = ?, \n");
sb.append(" reg_id = ?, \n");
sb.append(" reg_dt = sysdate, \n");
sb.append(" no = ?, \n");
sb.append(" passwd = ? \n");
sb.append(" WHERE seq = ? \n");
LOG.debug("1.======================");
LOG.debug("1.query \n"+sb.toString());
LOG.debug("1.======================");
pstmt = conn.prepareStatement(sb.toString());
pstmt.setString(1, vo.getTitle());
pstmt.setString(2, vo.getContents());
pstmt.setString(3, vo.getReg_id());
pstmt.setString(4, vo.getNo());
pstmt.setString(5, vo.getPasswd());
pstmt.setString(6, vo.getSeq());
LOG.debug("2.======================");
LOG.debug("2.param :"+vo);
LOG.debug("2.======================");
flag = pstmt.executeUpdate();
LOG.debug("3.======================");
LOG.debug("3.flag :"+flag);
LOG.debug("3.======================");
}catch(SQLException s){
LOG.debug("================");
LOG.debug("SQLException="+s.toString());
LOG.debug("================");
}finally{
JDBCReturnReso.close(pstmt);
JDBCReturnReso.close(conn);
}
return flag;
}
@Override
public int do_delete(DTO dto) {
ReviewVO vo = (ReviewVO) dto;
int flag = 0;
Connection conn = null;
PreparedStatement pstmt = null;
StringBuilder sb=new StringBuilder();
sb.append(" DELETE FROM board2 \n");
sb.append(" WHERE seq = ? \n");
try {
conn = connectionMaker.getConnection();
//transaction개발자가 관리한다.
conn.setAutoCommit(false);
LOG.debug("1======================");
LOG.debug("query:\n"+sb.toString());
LOG.debug("1======================");
pstmt = conn.prepareStatement(sb.toString());
//query param
pstmt.setString(1, vo.getSeq());
LOG.debug("2======================");
LOG.debug("param, seq="+vo.getSeq());
LOG.debug("2======================");
flag = pstmt.executeUpdate();
//-transaction
if(flag>0){
LOG.debug("3======================");
LOG.debug("transaction="+conn);
LOG.debug("3======================");
//conn.rollback();
conn.commit();
}else{
conn.rollback();
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
JDBCReturnReso.close(pstmt);
JDBCReturnReso.close(conn);
}
LOG.debug("3=====================");
LOG.debug("flag:"+flag);
LOG.debug("3=====================");
return flag;
}
@Override
public ReviewVO do_selectOne(DTO dto) {
ReviewVO vo =(ReviewVO) dto;
ReviewVO outVO = null;
Connection conn = null;
PreparedStatement pstmt= null;
ResultSet rs = null;
try{
StringBuilder sb=new StringBuilder();
sb.append(" SELECT \n");
sb.append(" seq, \n");
sb.append(" title, \n");
sb.append(" read_cnt, \n");
sb.append(" contents, \n");
sb.append(" reg_id, \n");
sb.append(" TO_CHAR(reg_dt,'YYYY-MM-DD') reg_dt, \n");
sb.append(" no, \n");
sb.append(" passwd \n");
sb.append(" FROM \n");
sb.append(" board2 \n");
sb.append(" WHERE seq = ? \n");
conn = connectionMaker.getConnection();
LOG.debug("1.============================");
LOG.debug("1.query: \n"+sb.toString());
LOG.debug("1.============================");
pstmt = conn.prepareStatement(sb.toString());
//query param
pstmt.setString(1, vo.getSeq());
LOG.debug("2.============================");
LOG.debug("2.param seq="+vo.getSeq());
LOG.debug("2.============================");
rs = pstmt.executeQuery();
if(rs.next()){
outVO = new ReviewVO();
outVO.setSeq(rs.getString("seq"));
outVO.setTitle(rs.getString("title"));
outVO.setRead_cnt(rs.getString("read_cnt"));
outVO.setContents(rs.getString("contents"));
outVO.setReg_id(rs.getString("reg_id"));
outVO.setReg_dt(rs.getString("reg_dt"));
outVO.setNo(rs.getString("no"));
outVO.setPasswd(rs.getString("passwd"));
}
}catch(SQLException e){
LOG.debug("===================");
LOG.debug("SQLException="+e.getMessage());
LOG.debug("===================");
}finally{
JDBCReturnReso.close(rs);
JDBCReturnReso.close(pstmt);
JDBCReturnReso.close(conn);
}
return outVO;
}
@Override
public List<?> do_retrieve(DTO dto) {
SearchVO vo = (SearchVO) dto;
List<ReviewVO> list=new ArrayList<>();
Connection conn = null;//db 연결
PreparedStatement pstmt = null;//query수행
ResultSet rs = null;//결과처리
//검색 query
StringBuilder sbWhere=new StringBuilder();
//제목=10,내용=20,ID=30
if(null != vo.getSearchDiv() ){
if("10".equals(vo.getSearchDiv())){
sbWhere.append("WHERE title like ?||'%' \n");
}else if("20".equals(vo.getSearchDiv())){
sbWhere.append("WHERE contents like ?||'%' \n");
}else if("30".equals(vo.getSearchDiv())){
sbWhere.append("WHERE reg_id like ?||'%' \n");
}
}
//main query
StringBuilder sb=new StringBuilder();
sb.append(" SELECT T1.*,T2.* \n");
sb.append(" FROM \n");
sb.append(" ( \n");
sb.append(" SELECT b.rnum num, \n");
sb.append(" b.seq, \n");
sb.append(" b.title, \n");
sb.append(" (SELECT COUNT(*) FROM read_cnt2 BR WHERE BR.SEQ2=B.SEQ ) read_cnt, \n");
sb.append(" b.contents, \n");
sb.append(" b.reg_id, \n");
sb.append(" DECODE(TO_CHAR(b.reg_dt,'YYYY-MM-DD') \n");
sb.append(" ,TO_CHAR(SYSDATE,'YYYY-MM-DD') \n");
sb.append(" ,TO_CHAR(b.reg_dt,'HH24:mi') \n");
sb.append(" ,TO_CHAR(b.reg_dt,'YYYY-MM-DD')) as reg_dt, \n");
sb.append(" b.no, \n");
sb.append(" b.passwd \n");
sb.append(" FROM( \n");
sb.append(" SELECT ROWNUM rnum,A.* \n");
sb.append(" FROM( \n");
sb.append(" SELECT a.* \n");
sb.append(" FROM board2 a \n");
sb.append(" --SEARCH CONDITION \n");
//-------------------------------------------------------------------------------
if(null != vo.getSearchDiv() ){//검색구분
if(null != vo.getSearchWord() && vo.getSearchWord().length()>0){//검색어가 있는냐
sb.append(sbWhere.toString());
}
}
//-------------------------------------------------------------------------------
sb.append(" ORDER BY a.reg_dt desc \n");
sb.append(" )A \n");
sb.append(" WHERE ROWNUM <=( ? * ( ?-1)+ ?) \n");
sb.append(" )B \n");
sb.append(" WHERE B.rnum>= ( ? * ( ?-1)+1) \n");
sb.append(" )T1 CROSS JOIN \n");
sb.append(" ( \n");
sb.append(" SELECT COUNT(*) total_cnt \n");
sb.append(" FROM board2 a \n");
sb.append(" --SEARCH CONDITION \n");
//-------------------------------------------------------------------------------
if(null != vo.getSearchDiv() ){//검색구분
if(null != vo.getSearchWord() && vo.getSearchWord().length()>0){//검색어가 있는냐
sb.append(sbWhere.toString());
}
}
//-------------------------------------------------------------------------------
sb.append(" )T2 \n");
LOG.debug("2 sql \n:"+sb.toString());
try{
conn = connectionMaker.getConnection();
pstmt = conn.prepareStatement(sb.toString());
//param
if(null != vo.getSearchDiv() && !"".equals(vo.getSearchDiv()) ){
//검색어
//PAGE_SIZE
//PAGE_NUM
//PAGE_SIZE
//PAGE_SIZE
//PAGE_NUM
//검색어
pstmt.setString(1, vo.getSearchWord());
pstmt.setInt(2, vo.getPageSize());
pstmt.setInt(3, vo.getPageNum());
pstmt.setInt(4, vo.getPageSize());
pstmt.setInt(5, vo.getPageSize());
pstmt.setInt(6, vo.getPageNum());
pstmt.setString(7, vo.getSearchWord());
}else{//검색이 없는 경우
//PAGE_SIZE
//PAGE_NUM
//PAGE_SIZE
//PAGE_SIZE
//PAGE_NUM
pstmt.setInt(1, vo.getPageSize());
pstmt.setInt(2, vo.getPageNum());
pstmt.setInt(3, vo.getPageSize());
pstmt.setInt(4, vo.getPageSize());
pstmt.setInt(5, vo.getPageNum());
}
LOG.debug("3 param \n:"+vo);
rs = pstmt.executeQuery();
while(rs.next()){
ReviewVO outVO=new ReviewVO();
outVO.setNum(rs.getInt("num"));
outVO.setSeq(rs.getString("seq"));
outVO.setTitle(rs.getString("title"));
outVO.setRead_cnt(rs.getString("read_cnt"));
outVO.setContents(rs.getString("contents"));
outVO.setReg_id(rs.getString("reg_id"));
outVO.setReg_dt(rs.getString("reg_dt"));
outVO.setNo(rs.getString("no"));
outVO.setPasswd(rs.getString("passwd"));
outVO.setTotal(rs.getInt("total_cnt"));
list.add(outVO);
}
}catch(SQLException e){
LOG.debug("===============================");
LOG.debug("SQLException="+e.toString());
LOG.debug("===============================");
}finally{
JDBCReturnReso.close(rs);
JDBCReturnReso.close(pstmt);
JDBCReturnReso.close(conn);
}
return list;
}
}
'코드 정리 ' 카테고리의 다른 글
[ORA-01745] 호스트/바인드 변수명이 부적합합니다 (0) | 2019.08.23 |
---|---|
[Java] 게시판 만들기 (조회수기능) (0) | 2019.08.18 |
review test (0) | 2019.08.17 |
[JAVA] 게시판 만들기 (Ctrl) (0) | 2019.08.16 |
[JAVA] 로그인 기능 (0) | 2019.08.14 |
Comments