스프링에서 게시판 목록구현과 게시판의 제목을 누르면 내용을 볼 수 있는 상세보기 기능을 구현하는데에 사용하는
selectList와 selectOne,
List selectList(query_id) id에 대한 select문을 실행한 후 레코드를 List로 반환한다.
List selectList(query_id, '조건') id에 대한 select문을 실행하면서 조건(쿼리문에서 사용할 인자)를 전달한다.
selectOne(query_id) id에 대한 select문을 실행한 후 한개의 레코드를 지정한 타입으로 반환한다.
selectOne(query_id, '조건') id에 대한 select문을 실행하면서 조건(쿼리문에서 사용할 인자)를 전달한다.
selectOne 예제 (게시판 상세보기)
boardMapper.xml
<select id="read" parameterType="int"
resultType="kr.co.vo.BoardVO">
SELECT BNO
, TITLE
, CONTENT
, WRITER
, REGDATE
FROM MP_BOARD
WHERE BNO = #{bno}
</select>
bno(int값 기본키속성) , title(제목) , content(내용), writer(작성자), regdate(작성일) 을
mp_board라는 테이블에서 전달받은 기본키값에 맞는 레코드를 select하는 쿼리문이다.
parameterType은 DAO에서 DB로 전달되는 값의 데이터형
resultType은 DB에서 DAO로 전달되는 값의 데이터형
이다.
db에는 위의 쿼리문이 들어가는 테이블을 생성했고 , 값을 받을 VO를 생성해놓은 상태이다.
mapper namespace는 boadMapper로 설정해놓았다.
boardDAO
//게시판 상세보기
@Override
public BoardVO read(int bno) throws Exception {
return sqlSession.selectOne("boardMapper.read", bno);
}
sqlSession.selectOne으로 bno(게시글 기본키속성 int값)을 조건으로 전달하고 그에 맞는 제목,내용,작성자,등록시간을 VO로 받아온다.
전달받을 값인 parameterType이 int값(bno)이기 때문에 int로 설정하고 문자열이면 String,Map이면 Map으로 해준다.
resultType 또한 DAO에 전달해주는 값의 데이터형에 따라 적어주면 된다. 나의 경우는 VO를 사용했다.
전,후의 컨트롤러나 서비스,뷰의 과정은 생략하겠다.
--------------------------
selectList 예제 (게시판 목록구현)
Mapper
<select id="list" resultType="kr.co.vo.BoardVO">
SELECT BNO
, TITLE
, WRITER
, REGDATE
FROM MP_BOARD
ORDER BY BNO DESC
</select>
mp_board의 모든 레코드를 내림차순으로 정렬한다.
DAO
@Override
public List<BoardVO> list() throws Exception {
return sqlSession.selectList("boardMapper.list");
selectList는 값을 항상 List로 반환받는다.
그래서 DB의 값을 전달받은 VO를 DAO에서 List로 받는다
selectOne은 레코드 하나, selectList은 여러 레코드 라는 차이가 있다.
'DB > MYBATIS' 카테고리의 다른 글
Mybatis에서 null값 허용하기 (0) | 2021.10.14 |
---|---|
select key의 사용 ex)게시판 첨부파일 작성 (1) | 2021.08.05 |
MYBATIS에서 include문 사용법 (0) | 2021.07.31 |