티스토리 뷰

기존에 스프링 레거시로 하다가 스프링부트를 시작해봤는데 처음 접하다 보니 일주일 간 많이 헤맸다. 
각종 블로그를 참고했지만 최신버전과 맞지 않는 부분이 많았고 각자 커스텀 정도가 달라 아무리 예제라지만 내 코드에 적용하기엔 쉽지 않았다. 처음엔 Repository가 DAO 역할을 한다는 것을 어렴풋이 알았지만 그럼 Mapper는 또 뭔가? 같은 역할 아닌가? 하고 제대로 개념조차 서지 않았다. 그래서 Repository를 Service와 매칭을 했더니 @AutoWired를 하였음에도 불구하고 Bean Configuration 관련 오류가 나왔다. 알고보니 Repository는 .xml 없이 자주 쓰는 구문들을 호출하기 위한 메소드의 집합체였다. 이 때는 Service가 필요없어지게 된다. JPA 형식으로 구현하는 것 같고 Mapper는 기존 레거시의 DAO형식 그대로 .xml을 매핑해서 가져오는 구조인 듯 하다.

 

남들은 import 구문을 안 보여줘서 답답했는데 나는 다 적을 것이다.

 

Controller.java

package com.example.demo.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;

import com.example.demo.entity.Member;
import com.example.demo.service.MemberService; 

@Controller 
@RequestMapping("member")
public class MemberController  {
 
    private final MemberService memberService;

    @Autowired
    public MemberController(MemberService memberService){
        this.memberService = memberService;
    }

    @GetMapping("list")
    public String getMemberList(Model model) throws Exception{
        
        List<Member> memberList = memberService.getMemberList();
        model.addAttribute("members", memberList);
        
        return "views/memberForm";
    }
}​

 

Service.java 

package com.example.demo.service;

import java.util.List;

import org.springframework.stereotype.Service;

import com.example.demo.entity.Member;
import com.example.demo.mapper.MemberMapper;

@Service
public class MemberService {
    
    MemberMapper memberMapper; 

    public MemberService(MemberMapper memberMapper){
        this.memberMapper = memberMapper;
    }

    public List<Member> getMemberList() {
        return memberMapper.getMemberList();
    }
}

 

Mapper.java

package com.example.demo.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;

import com.example.demo.entity.Member;

@Mapper
public interface MemberMapper {

    List<Member> getMemberList();
}

 

Mapper.xml

<?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">
 
<mapper namespace="com.example.demo.mapper.MemberMapper">

    <select id="getMemberList" resultType="Member">
        SELECT * FROM members
    </select>
    
</mapper>

 

댓글
공지사항
최근에 올라온 글