JdbcBoardDaoImpl
package kr.or.ddit.board.dao;
import java.sql.SQLException;
import java.util.List;
import com.ibatis.sqlmap.client.SqlMapClient;
import kr.or.ddit.board.vo.JdbcBoardVO;
import kr.or.ddit.util.SqlMapClientFactory;
public class JdbcBoardDaoImpl implements IJdbcBoardDao{
private SqlMapClient smc = null;
// 1번
private static JdbcBoardDaoImpl dao;
// 2번
private JdbcBoardDaoImpl(){
smc = SqlMapClientFactory.getSqlMapClient(); // SqlMapClient객체 생성
}
// 3번
public static JdbcBoardDaoImpl getInstance(){
if(dao==null) dao = new JdbcBoardDaoImpl();
return dao;
}
@Override
public int insertBoard(JdbcBoardVO boardVo) {
int cnt = 0;
try {
Object obj = smc.insert("board.insertBoard", boardVo);
if(obj==null) {
cnt = 1;
}
} catch (SQLException e) {
cnt = 0;
e.printStackTrace();
}
return cnt;
}
@Override
public int deleteBoard(int boardNo) {
int cnt = 0;
try {
cnt = smc.delete("board.deleteBoard", boardNo);
} catch (SQLException e) {
cnt = 0;
e.printStackTrace();
}
return cnt;
}
@Override
public int updateBoard(JdbcBoardVO boardVo) {
int cnt = 0;
try {
cnt = smc.update("board.updateBoard", boardVo);
} catch (SQLException e) {
cnt = 0;
e.printStackTrace();
}
return cnt;
}
@Override
public List<JdbcBoardVO> getAllBoardList() {
List<JdbcBoardVO> boardList = null;
try {
boardList = smc.queryForList("board.getAllBoardList");
} catch (SQLException e) {
boardList = null;
e.printStackTrace();
}
return boardList;
}
@Override
public JdbcBoardVO getBoard(int boardNo) {
JdbcBoardVO board = null;
try {
board = (JdbcBoardVO)smc.queryForObject("board.getBoard", boardNo);
} catch (SQLException e) {
board = null;
e.printStackTrace();
}
return board;
}
@Override
public List<JdbcBoardVO> getSearchBoardList(String title) {
List<JdbcBoardVO> boardList = null;
try {
boardList = smc.queryForList("board.getSearchBoardList", title);
} catch (SQLException e) {
boardList = null;
e.printStackTrace();
}
return boardList;
}
@Override
public int setCountIncrement(int boardNo) {
int cnt = 0;
try {
cnt = smc.update("board.setCountIncrement", boardNo);
} catch (SQLException e) {
cnt = 0;
e.printStackTrace();
}
return cnt;
}
}
Board.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap
PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap namespace="board">
<insert id ="insertBoard" parameterClass="boardVo">
insert into jdbc_board(board_no, board_title, board_writer, board_date, board_cnt, board_content)
values(board_seq.nextVal, #board_title#, #board_writer#, sysdate, 0, #board_content#)
</insert>
<delete id="deleteBoard" parameterClass="int">
delete from jdbc_board where board_no = #board_no#
</delete>
<update id="updateBoard" parameterClass="boardVo">
update jdbc_board set board_title = #board_title#, board_content = #board_content#,
board_date = sysdate where board_no = #board_no#
</update>
<select id="getAllBoardList" resultClass="boardVo">
select board_no, board_title, board_writer, to_char(board_date, 'YYYY-MM-DD') board_date,
board_cnt, board_content from jdbc_board order by board_no desc
</select>
<select id="getBoard" resultClass="boardVo" parameterClass="int">
select board_no, board_title, board_writer, to_char(board_date, 'YYYY-MM-DD') as board_date,
board_cnt, board_content from jdbc_board where board_no = #board_no#
</select>
<select id="getSearchBoardList" resultClass="boardVo">
select board_no, board_title, board_writer, to_char(board_date, 'YYYY-MM-DD') as board_date,
board_cnt, board_content from jdbc_board
where board_title like '%' || #board_title# || '%' order by board_no desc
</select>
<update id="setCountIncrement" parameterClass="int">
update jdbc_board set board_cnt = board_cnt + 1 where board_no = #board_no#
</update>
</sqlMap>
sqlMapConfig
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig
PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
<!--
DB와 연결하는 정보를 properties파일에 설정해 놓고
이 properties파일의 내용을 읽어올 수 있도록 설정한다.
-->
<properties resource="kr/or/ddit/config/dbinfo.properties"/>
<!--
SQL문이 저장된 xml문서에서 실행할 쿼리문을 찾을때
이 xml문서의 네임스페이스와 SQL문이 작성된 태그의 id속성값을
연결해서 찾도록 설정한다.
-->
<settings useStatementNamespaces = "true"/>
<!--
쿼리문에 사용할 VO객체는 패키지 이름을 포함한 전체 이름을
사용해야 하는데 그렇게 되면 문장이 너무 길어질 수 있기 때문에
전체 이름을 대신할 alias를 설정할 수 있다.
형식) <typeAlias alias="alias명" type="클래스의 풀네임"/>
-->
<typeAlias alias ="lprodVo" type="kr.or.ddit.vo.LprodVO"/>
<typeAlias alias ="memberVo" type="kr.or.ddit.mvc.vo.MemberVO"/>
<typeAlias alias ="boardVo" type="kr.or.ddit.board.vo.JdbcBoardVO"/>
<!-- DB와의 연결을 처리하는 부분 -->
<transactionManager type="JDBC">
<dataSource type="SIMPLE">
<property name="JDBC.Driver" value="${driver}"/>
<property name="JDBC.ConnectionURL" value="${url}"/>
<property name="JDBC.Username" value="${user}"/>
<property name="JDBC.Password" value="${pass}"/>
</dataSource>
</transactionManager>
<!-- 실행할 SQL문 등록하기 -->
<!--
실행할 SQL문은 xml문서로 따로 만든 후 그 xml문서를
아래와 같이 등록하면 된다.
형식) <sqlMap resource="경로명/파일명.xml"/>
-->
<sqlMap resource="kr/or/ddit/ibatis/mapper/lprodTest.xml"/>
<sqlMap resource="kr/or/ddit/ibatis/mapper/jdbc2ibatis.xml"/>
<sqlMap resource="kr/or/ddit/ibatis/mapper/memberTest.xml"/>
<sqlMap resource="kr/or/ddit/ibatis/mapper/Board.xml"/>
</sqlMapConfig>