1.마이바티스 사용 4가지 방법에 대하여 설명하시오.
1-1. Way.1
: 인터페이스의 DAO객체를 XML의 namespace로 매핑하여 SqlSession 객체의 getMapper 메소드를 이용한다.
package edu.bit.ex.board.one;
import javax.inject.Inject;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import lombok.AllArgsConstructor;
import lombok.extern.log4j.Log4j;
@Log4j
@AllArgsConstructor
@Controller
public class BoardController1 {
@Inject
BoardService1 boardService;
@GetMapping("/board/list1")
public String list(Model model) throws Exception {
model.addAttribute("list", boardService.selectBoardList());
log.info("list()");
return "board/list";
}
}
package edu.bit.ex.board.one;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import edu.bit.ex.board.vo.BoardVO;
public class BoardService1 {
SqlSession sqlSession;
public List<BoardVO> selectBoardList() throws Exception {
IBDAO dao = sqlSession.getMapper(IBDAO.class);
return dao.listDAO();
}
}
package edu.bit.ex.board.one;
import java.util.List;
import edu.bit.ex.board.vo.BoardVO;
public interface IBDAO {
public List<BoardVO> listDAO();
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- DAO 객체의 경로를 통해 id를 지정한다. -->
<mapper namespace="edu.bit.ex.one.IBDAO">
<select id="listDAO" resultType="edu.bit.ex.board.vo.BoardVO">
<![CDATA[
select bId, bName, bTitle, bContent, bDate, bHit, bGroup, bStep, bIndent from mvc_board order by bGroup desc, bStep asc
]]>
</select>
</mapper>
1-2. Way.2
: 인터페이스 필요없이 SqlSession에서 제공하는 함수(selectList, selectOne)을 이용하여 쿼리구현을 위한 XML을 통해 해당 XML의 namespace를 직접 지정한다.
package edu.bit.ex.board.two;
import javax.inject.Inject;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import jdk.internal.org.jline.utils.Log;
@Controller
public class BoardController2 {
@Inject
BoardService2 service;
@GetMapping("/board/list_one")
public String list(Model model) throws Exception {
model.addAttribute("list", service.selectBoardList());
Log.info("list()");
return "board/list";
}
}
package edu.bit.ex.board.two;
import java.util.List;
import javax.inject.Inject;
import org.apache.ibatis.session.SqlSession;
import org.springframework.stereotype.Service;
import edu.bit.ex.board.vo.BoardVO;
@Service
public class BoardService2 {
@Inject
SqlSession sqlSession;
public List<BoardVO> selectBoardList() throws Exception {
return sqlSession.selectList("board.selectBoardList");
}
}
<!-- namespace를 사용자가 정의한다.(Service 객체에서 지정한 board) -->
<mapper namespace="board">
<select id="selectBoardList" resultType="edu.bit.ex.board.vo.BoardVO">
<![CDATA[
select bId, bName, bTitle, bContent, bDate, bHit, bGroup, bStep, bIndent from mvc_board order by bGroup desc, bStep asc
]]>
</select>
</mapper>
1-3. Way.3
: root-context.xml 내 mybatis-spring-scan 태그의 패키지 경로를 매핑한다.
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="mapperLocations" value="classpath:/edu/bit/ex/board/mapper/*.xml" />
</bean>
1-4. Way.4
: Mapper 객체 내 어노테이션을 이용하여 쿼리문을 직접 명시한다.
package edu.bit.ex.board.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Select; // mybatis 어노테이션 모듈
import edu.bit.ex.board.vo.BoardVO;
public interface BoardMapper {
// @Select 이외에도 @Update, @Delete 등의 어노테이션도 가능하다.
@Select("쿼리문")
public List<BoardVO> getList();
}
'WebDev > 본과정' 카테고리의 다른 글
RESTful (0) | 2021.05.17 |
---|---|
AJAX와 JSON (0) | 2021.05.17 |
DB의 설계와 Spring의 MockMVC (0) | 2021.05.16 |
SQL의 더미 데이터 처리와 JUnit을 통한 테스트 (0) | 2021.05.16 |
오라클의 페이징 처리 방법과 ROWNUM 키워드 (0) | 2021.05.16 |
최근댓글