<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="BoardMapper">
<select id="list" resultType="BoardDTO">
select num, title, author, content, writeday, readcnt
from board
order by num desc
</select>
<insert id="write" parameterType="BoardDTO">
insert into board (num, title, author, content)
values (board_seq.nextval, #{title}, #{author}, #{content})
</insert>
<select id="retrieve" parameterType="int"
resultType="BoardDTO">
select num, title, author, content, writeday, readcnt
from board
where num = #{num}
</select>
<update id="readcnt" parameterType="int">
update board
set readcnt = readcnt + 1
where num = #{num}
</update>
</mapper>
BoardDAO.java
package com.dao;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import com.dto.BoardDTO;
public class BoardDAO {
// 전체 목록
public List<BoardDTO> list(SqlSession session){
List<BoardDTO> list = session.selectList("BoardMapper.list");
return list;
}
// 글 저장
public int write(SqlSession session, BoardDTO dto) {
int n = session.insert("BoardMapper.write", dto);
return n;
}
// 글 자세히 보기
public BoardDTO retrieve(SqlSession session, int num) {
BoardDTO dto = session.selectOne("BoardMapper.retrieve", num);
return dto;
}
// 조회수 증가
public int readcnt (SqlSession session, int num) {
int n = session.update("BoardMapper.readcnt", num);
return n;
}
}
BoardServiceImpl.java
package com.service;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import com.config.MySqlSessionFactory;
import com.dao.BoardDAO;
import com.dto.BoardDTO;
public class BoardServiceImpl implements BoardService {
@Override
public List<BoardDTO> list() {
List<BoardDTO> list = null; //return 하기 위해 밖에서 선언
SqlSession session = MySqlSessionFactory.getSession();
try {
// DAO 연동코드
BoardDAO dao = new BoardDAO(); //객체생성
list = dao.list(session);
}finally {
session.close();
}
return list;
}
@Override
public int write(BoardDTO dto) {
int n = 0;
SqlSession session = MySqlSessionFactory.getSession();
try {
// DAO 연동코드
BoardDAO dao = new BoardDAO(); //객체생성
n = dao.write(session, dto);
session.commit(); //mybatis는 자동커밋이 아니기 때문에 반드시 커밋
}finally {
session.close();
}
return n;
}
@Override
public BoardDTO retrieve(int num) {
BoardDTO dto = null;
SqlSession session = MySqlSessionFactory.getSession();
try {
// DAO 연동코드
BoardDAO dao = new BoardDAO(); //객체생성
//조회수 증가
int n = dao.readcnt(session, num);
session.commit();
//자세히 보기
dto = dao.retrieve(session, num);
}finally {
session.close();
}
return dto;
}
}