dao를 class에서 (mapper)interface로 바꾸기

조수경·2022년 2월 14일
0

Spring

목록 보기
29/43
post-thumbnail

[Spring] 마이바티스 (MyBatis) - Mapper Interface 활용

Mapper 인터페이스란?
여러 Mapper 인터페이스 작성시 설정한다.

Mapper 인터페이스란?

  • 매핑파일에 기재된 SQL을 호출하기 위한 인터페이스이다.
  • Mybatis 3.0부터 생겼다.
  • 매핑파일에 있는 SQL을 인터페이스로 호출한다.

Mapper 사용하지않았을시?

  • session.selectOne("namespace.아이디", 파라미터); 형식 이였다.
  • 네임스페이스+"."+SQL ID 로 지정해야한다.
  • 문자열로 작성하기때문에 버그가 생길 수 있다.
  • IDE에서 제공하는 code assist를 사용할 수 없다.

Mapper 사용했을때

  • Mapper 인터페이스 개발자가 직접작성한다.
  • 패키지 이름+"."+인터페이스이름+"."+메서드이름이 네임스페이스+"."+SQL의 ID를 설정해야 한다.
  • 네임스페이스 속성에는 패키지를 포함한 Mapper 인터페이스 이름 형식이다.
  • SQL ID 에는 매핑하는 메서드 이름을 지정하는 것.

Mapper 인터페이스 작성
반드시 인터페이스로 선언해주어야한다.
네임스페이스 명은 패키지포함 인터페이스이름으로 작성.
ex)
메서드명은 SQLID와 동일하게작성.

바꾸기 시작!

web.xml에서 설정해주기

<!-- 오라클과 자바를 연결해주는 라이브러리 -->
		<dependency>
		    <groupId>com.oracle.database.jdbc</groupId>
		    <artifactId>ojdbc6</artifactId>
		    <version>11.2.0.4</version>
		</dependency>

	<dependency>
		    <groupId>org.apache.commons</groupId>
		    <artifactId>commons-dbcp2</artifactId>
		    <version>2.9.0</version>
		</dependency>
		

		<dependency>
		    <groupId>org.mybatis</groupId>
		    <artifactId>mybatis-spring</artifactId>
		    <version>2.0.6</version>
		</dependency>
		
		<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
		<!-- 스프링에서 JDBC 드라이버를 통해 DB 연결 -->
		<dependency>
		    <groupId>org.springframework</groupId>
		    <artifactId>spring-jdbc</artifactId>
		    <version>${org.springframework-version}</version>
		</dependency>

Mapper interface 만들기

package kr.or.ddit.mapper;

import java.util.List;
import java.util.Map;

public interface LprodMapper {

	//상품분류 별 거래처 목록
	public List<LprodVO> list(Map<String, Object> map);
	//상품분류 별 거래처 목록 행의 수
	public int listCount(Map<String, Object> map);
	//거래처 상세 정보
	public BuyerVO detail(String buyerId);
	//거래처 수정
	public int modify(BuyerVO buyerVO);
	//로그인
	public MemberVO loginPost(MemberVO memberVO);
}

sql namespace변경

LprodService 에서 Dao를 Mapper로 변경

  package kr.or.ddit.lprod.service.impl;

import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import kr.or.ddit.BuyerVO;
import kr.or.ddit.book.service.BookService;
import kr.or.ddit.lprod.mapper.LprodMapper;
import kr.or.ddit.lprod.service.LprodService;
import kr.or.ddit.lprod.vo.LprodVO;
import kr.or.ddit.member.vo.MemberVO;

@Service
public class LprodServiceImpl implements LprodService {
  //DI
  @Autowired
  //LprodDao lprodDao;
  private LprodMapper lprodMapper;

  //상품분류 별 거래처 목록
  //메소드 재정의
  @Override
  public List<LprodVO> list(Map<String,Object> map){
      return this.lprodMapper.list(map);
  }

  //상품분류 별 거래처 목록 행의 수
  @Override
  public int listCount(Map<String, Object> map) {
      return this.lprodMapper.listCount(map);
  }

  //거래처 상세 정보
  @Override
  public BuyerVO detail(String buyerId) {
      return this.lprodMapper.detail(buyerId);
  }

  //거래처 수정
  @Override
  public int modify(BuyerVO buyerVO) {
      return this.lprodMapper.modify(buyerVO);
  }

  //로그인
  //메소드 재정의
  @Override
  public MemberVO loginPost(MemberVO memberVO) {
      return this.lprodMapper.loginPost(memberVO);
  }

}

LprodMapper 만들기

  package kr.or.ddit.lprod.mapper;

import java.util.List;
import java.util.Map;

import kr.or.ddit.BuyerVO;
import kr.or.ddit.lprod.vo.LprodVO;
import kr.or.ddit.member.vo.MemberVO;

public interface LprodMapper {

    //상품분류 별 거래처 목록
    public List<LprodVO> list(Map<String, Object> map);
    //상품분류 별 거래처 목록 행의 수
    public int listCount(Map<String, Object> map);
    //거래처 상세 정보
    public BuyerVO detail(String buyerId);
    //거래처 수정
    public int modify(BuyerVO buyerVO);
    //로그인
    public MemberVO loginPost(MemberVO memberVO);
}
profile
신입 개발자 입니다!!!

0개의 댓글