SQL
create table rest_board(idx number primary key, writer varchar2(50)
, content varchar2(100), regdate date);
create sequence rest_board_seq;
RestBoard.java
@Data
public class RestBoard {
private int idx;
private String writer;
private String content;
private String regdate;
}
RestMapper.xml
<mapper namespace="xyz.itwill09.mapper.RestBoardMapper">
<insert id="insertRestBoard">
<selectKey resultType="int" keyProperty="idx" order="BEFORE">
select rest_board_seq.nextval from dual
</selectKey>
insert into rest_board values(#{idx}, #{writer}, #{content}, sysdate)
</insert>
<update id="updateRestBoard">
update rest_board set writer=#{writer}, content=#{content} where idx=#{idx}
</update>
<delete id="deleteRestBoard">
delete from rest_board where idx=#{idx}
</delete>
<select id="selectRestBoard" resultType="RestBoard">
select idx, writer, content, regdate from rest_board where idx=#{idx}
</select>
<select id="selectRestBoardCount" resultType="int">
select count(*) from rest_board
</select>
<select id="selectRestBoardList" resultType="RestBoard">
select * from (
select rownum rn, board.* from (
select idx, writer, content, regdate from rest_board order by idx desc
) board
) where rn between #{startRow} and #{endRow}
</select>
</mapper>
RestMapper.java
public interface RestBoardMapper {
int insertRestBoard(RestBoard restBoard);
int updateRestBoard(RestBoard restBoard);
int deleteRestBoard(int idx);
RestBoard selectRestBoard(int idx);
int selectRestBoardCount();
List<RestBoard> selectRestBoardList(Map<String, Object> map);
}
RestBoardDAO.java
public interface RestBoardDAO {
int insertRestBoard(RestBoard restBoard);
int updateRestBoard(RestBoard restBoard);
int deleteRestBoard(int idx);
RestBoard selectRestBoard(int idx);
int selectRestBoardCount();
List<RestBoard> selectRestBoardList(Map<String, Object> map);
}
RestBoardDAOImpl.java
@Repository
@RequiredArgsConstructor
public class RestBoardDAOImpl implements RestBoardDAO {
private final SqlSession sqlSession;
public int insertRestBoard(RestBoard restBoard) {
return sqlSession.getMapper(RestBoardMapper.class).insertRestBoard(restBoard);
}
@Override
public int updateRestBoard(RestBoard restBoard) {
return sqlSession.getMapper(RestBoardMapper.class).updateRestBoard(restBoard);
}
@Override
public int deleteRestBoard(int idx) {
return sqlSession.getMapper(RestBoardMapper.class).deleteRestBoard(idx);
}
@Override
public RestBoard selectRestBoard(int idx) {
return sqlSession.getMapper(RestBoardMapper.class).selectRestBoard(idx);
}
@Override
public int selectRestBoardCount() {
return sqlSession.getMapper(RestBoardMapper.class).selectRestBoardCount();
}
@Override
public List<RestBoard> selectRestBoardList(Map<String, Object> map) {
return sqlSession.getMapper(RestBoardMapper.class).selectRestBoardList(map);
}
}
RestBoardService.java
public interface RestBoardService {
void addRestBoard(RestBoard restBoard);
void modifyRestBoard(RestBoard restBoard);
void removeRestBoard(int idx);
RestBoard getRestBoard(int idx);
Map<String, Object> getRestBoardList(int pageNum, int pageSize);
}
RestBoardServiceImpl.java
@Service
@RequiredArgsConstructor
public class RestBoardServiceImpl implements RestBoardService {
private final RestBoardDAO restBoardDAO;
public void addRestBoard(RestBoard restBoard) {
restBoardDAO.insertRestBoard(restBoard);
}
@Override
public void modifyRestBoard(RestBoard restBoard) {
restBoardDAO.updateRestBoard(restBoard);
}
@Override
public void removeRestBoard(int idx) {
restBoardDAO.deleteRestBoard(idx);
}
@Override
public RestBoard getRestBoard(int idx) {
return restBoardDAO.selectRestBoard(idx);
}
@Override
public Map<String, Object> getRestBoardList(int pageNum, int pageSize) {
int totalSize=restBoardDAO.selectRestBoardCount();
int blockSize=5;
Pager pager=new Pager(pageNum, pageSize, totalSize, blockSize);
Map<String, Object> pageMap=new HashMap<String, Object>();
pageMap.put("startRow", pager.getStartRow());
pageMap.put("endRow", pager.getEndRow());
List<RestBoard> restBoardList=restBoardDAO.selectRestBoardList(pageMap);
Map<String, Object> resultMap=new HashMap<String, Object>();
resultMap.put("pager", pager);
resultMap.put("restBoardList", restBoardList);
return resultMap;
}
}