728x90
반응형
BoardDao.java
package dao;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import dao.mapper.BoardMapper;
import logic.Board;
@Repository
public class BoardDao {
@Autowired //객체 주입. DI
private SqlSessionTemplate template;
private Class<BoardMapper> cls = BoardMapper.class;
private Map<String,Object> param = new HashMap<String,Object>();
public int count(String boardid) {
param.clear();
param.put("boardid", boardid);
return template.getMapper(cls).count(param);
}
public List<Board> list(Integer pageNum, int limit, String boardid) {
param.clear();
int startrow = (pageNum - 1) * limit + 1;
int endrow = startrow + limit - 1;
param.put("startrow", startrow);
param.put("endrow", endrow);
param.put("boardid", boardid);
return template.getMapper(cls).list(param);
}
public void write(Board board) {
int num = maxNum() + 1;
board.setNum(num);
board.setGrp(num);
template.getMapper(cls).write(board);
}
private int maxNum() {
return template.getMapper(cls).maxNum(param);
}
public Board selectOne(Integer num) {
param.clear();
param.put("num", num);
return template.getMapper(cls).selectOne(param);
}
public void readcntadd(Integer num) {
template.getMapper(cls).readcntadd(num);
}
public void update(Board board) {
template.getMapper(cls).update(board);
}
public void grpStepAdd(Board board) {
template.getMapper(cls).grpStepAdd(board);
}
public void reply(Board board) {
board.setNum(maxNum() + 1); //답글의 num 저장
board.setGrplevel(board.getGrplevel()+1); //답글의 grplevel로 저장 : 원글 level + 1
board.setGrpstep(board.getGrpstep()+1); //답글의 grpstep로 저장 : 원글 step + 1
template.getMapper(cls).reply(board);
}
public void delete(int num) {
template.getMapper(cls).delete(num); //db에 데이터 삭제하기
}
}
BoardMapper.java
package dao.mapper;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import logic.Board;
public interface BoardMapper {
@Select("select count(*) from board where boardid=#{boardid}")
int count(Map<String, Object> param);
@Select("select * from "
+ "(select rownum rnum, num, writer, subject, content, file1 fileurl, regdate, "
+ " grp, grplevel, grpstep, pass, readcnt from "
+ "(select * from board where boardid =#{boardid} order by grp desc, grpstep asc))"
+ " where rnum >= #{startrow} and rnum <= #{endrow}")
List<Board> list(Map<String, Object> param);
@Insert("insert into board "
+ "(num, writer, pass, subject, content, file1, boardid, regdate, readcnt, grp, grplevel, grpstep, ip)"
+ "values "
+ "(#{num}, #{writer}, #{pass}, #{subject}, #{content}, #{fileurl}, #{boardid}, sysdate, 0, #{grp}, #{grplevel}, #{grpstep}, #{ip})")
void write(Board board);
@Select("select nvl(max(num),0) from board")
int maxNum(Map<String, Object> param);
@Select("select num, writer, subject, content, file1 as fileurl, regdate, "
+ " grp, grplevel, grpstep, pass, readcnt, boardid from board where num=#{num}")
Board selectOne(Map<String, Object> param);
@Update("update board set readcnt = readcnt + 1 where num=#{num}")
void readcntadd(Integer num);
@Update("update board set writer=#{writer}, subject=#{subject}, content=#{content}, "
+ " file1=#{fileurl} where num=#{num}")
void update(Board board);
@Update("update board set grpstep = grpstep+1 "
+ " where grp=#{grp} and grpstep >#{grpstep}")
void grpStepAdd(Board board);
@Insert("insert into board "
+ " (num, writer, pass, subject, content, file1, boardid, regdate, readcnt, grp, grplevel, grpstep, ip)"
+ " values "
+ " (#{num}, #{writer}, #{pass}, #{subject}, #{content}, #{fileurl}, #{boardid}, sysdate, 0, #{grp}, #{grplevel}, #{grpstep}, #{ip})")
void reply(Board board);
@Delete("delete from board where num=#{num}")
void delete(int num);
}
728x90
반응형