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