본문 바로가기

bitcamp/면접족보

면접족보 21/02/04_MyBatis

1. 마이바티스 사용 4가지 방법에 대하여 설명하시오.

*1번째 방법*

· BoardMapper를 통하지 않고, root-context.xml에 적힌 mapper.xml의 위치를 찾아 service에서 sql문 호출하는 방식

 

<IBao.java>

1
2
3
4
 public interface IBDao {
    public List<BoardVO> listDao();
 }
 
cs

 

<Bservice1.java>

1
2
3
4
5
6
7
8
9
10
 @Service
 public class Bservicel {
    @Autowired
    SqlSession sqlSession;
    
    public List<BoardVO> selectBoardList() throws Exception{
        IBDao dao = sqlSession.getMapper(IBDao.class);
        return dao.listDao();
    }    
 }
cs

 

<board1.xml>

1
2
3
4
5
6
7
 <mapper namespace="edu.bit.ex.one.IBDao">
    <select id="listDao" resultType="edu.bit.ex.board.vo.BoardVO">
        <![CDATA[
    select * from mvc_board order by bGroup desc, bStep asc
        ]]>
    </select>
 </mapper>
cs

 

<BoardController1.java>

1
2
3
4
5
6
7
8
9
10
11
12
13
 @Controller
 public class BoardController1 {
    @Inject
    Bservicel bservice;
 
    @RequestMapping("/board/list1")
    public String list(Model model) throws Exception {
        System.out.println("list1");
        model.addAttribute("list", bservice.selectBoardList());
 
        return "list";
    }
 }
cs

 

 

*2번째 방법*
· BoardMapper를 통해 구현하지 않으며, namespace는 개발자가가 지정한다.
· 1, 2번은 mybatis 3일 때 사용한 방법으로 root-context.xml에서 아래의 내용 필요
 <property value="classpath:/edu/bit/ex/board/mapper/*.xml" name="mapperLocations" />

 

<Bservicel2.java>

1
2
3
4
5
6
7
8
9
10
 @Service
 public class Bservicel2 {
    @Autowired
    SqlSession sqlSession;
    
    public List<BoardVO> selectBoardList() throws Exception{
        return sqlSession.selectList("board.selectBoardList");
        //("board.selectBoardList")는 board2.xml에 있는 id와 같은이름
    }
 }
cs

 

<board2.xml>

1
2
3
4
5
6
7
 <mapper namespace="board">
    <select id="selectBoardList" resultType="edu.bit.ex.board.vo.BoardVO"> 
        <![CDATA[
    select * from mvc_board order by bGroup desc, bStep asc
        ]]>
    </select>
 </mapper>
cs

 

<BoardController2.java>

1
2
3
4
5
6
7
8
9
10
11
12
13
 @Controller
 public class BoardController2 {
    @Inject
    Bservicel2 bservice;
 
    @RequestMapping("/board/list2")
    public String list(Model model) throws Exception {
        System.out.println("list");
        model.addAttribute("list", bservice.selectBoardList());
 
        return "list2";
    }
 }
cs

 

 

*3, 4번째 방법*
· BoardMapper.xml 작성없이, BoardMapper.java에서 함수 위에 sql문을 다이렉트로 지정하는 방법
· 1, 2번에서 필요했던 xml 내용은 3, 4번 방식에서는 없어도 무방하지만, root-context.xml에서 아래의 내용 필요
 <mybatis-spring:scan base-package="edu.bit.ex.board.mapper" />

· servlet-context.xml에서 아래의 내용을 스캔하므로 조심할 것! 
 <context:component-scan base-package="edu.bit.ex" />

<BoardMapper.java>

1
2
3
4
 public interface BoardMapper {
   @Select("select * from mvc_board order by bGroup desc, bStep asc")
   public List<BoardVO> getList();
 }
cs

 

 

※연습문제

mybatis의 두번째 방법으로 emp list를 출력하시오♣ 

 

<Eservicel2.java>

1
2
3
4
5
6
7
8
9
 @Service
 public class Eservicel2 {
    @Autowired
    SqlSession sqlSession;
    
    public List<EmpVO> selectEmpList() throws Exception{
        return sqlSession.selectList("emp.selectEmpList");
    }
 }
cs

 

<emp.xml>

1
2
3
4
5
6
7
 <mapper namespace="emp">
    <select id="selectEmpList" resultType="edu.bit.ex.emp.vo.EmpVO">
        <![CDATA[
    select * from emp
        ]]>
   </select>
 </mapper>
cs

 

<EmpController.java>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
 @Controller
 public class EmpController2 {
    @Inject
    private Eservicel2 eservice;
 
    @RequestMapping("/emp/list22")
    public String list(Model model) throws Exception{
        model.addAttribute("list", eservice.selectEmpList());
        System.out.println("list");
 
        return "list";
    }
 }
 
cs

 

 

<구현 화면>

 

 

데이터베이스 모델링 - 개념적 설계

1. DVD를 대여하기 위해서는 회원 가입을 해야 한다. 
   회원가입 시에는 회원에 대한 이름, 주민번호, 전화번호, 핸드폰번호, 이메일, 우편번호, 주소, 등록일 등을 기록해둔다. 
   가입자는 관심 장르를 설정하여 신 프로 입고 시 이메일을 발송한다.
2. DVD에 대한 정보는 영화제목, 제작사, 주연배우, 감독, 영화출시일 등의 상세 정보를 관리해야하며 
   각 DVD에 대한 파손 여부와 대여 여부 등의 상태정보도 관리되어야 한다.
3. DVD는 장르로 구분해서 체계적으로 관리된다.
4. 대여는 신 프로의 경우에는 대여일이 기본 1일이며 구 프로인 경우에는 2일이 기본 대여일이며 
   대여료는 신 프로의 경우에는 2000원이며 구 프로인 경우에는 대여료가 1000원이다.
5. 미납회원 관리와 함께 연체되었을 경우 하루에 500원 연체료가 누적된다. 
   DVD가 파손되거나 망실된 경우 해당 회원은 DVD 가격을 변상해야 한다. 
6. 회원이 DVD를 대여할 경우 대여 1회당 1점씩의 포인트 점수를 부여하고 포인트 점수가 10점이 되면 
   무료로 DVD 하나를 대여할 수 있도록 포인트제를 운영하고자 한다.
7. DVD 대여점 운영자는 금전상의 관리를 위해서 일별, 월별 매출액과 DVD가 대여된 횟수를 알고 싶어 한다.

 

 

  <엔티티 추출>                                                       <엔티티 간의 관계 설정>

 

 

 

<ER 다이어그램>