MyBatis 설정

    MyBatis 가 담당하는 역할

    Mybatis 라이브러리 다운로드

     

     

    Service와 Dao 준비하기

     

    NoticeServise 개체 가져오기

    list는 list기능

    detail은 id값

    NoticeController.java

    package com.newlecture.web.controller.admin;
    
    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.RequestMapping;
    
    import com.newlecture.web.entity.Notice;
    import com.newlecture.web.service.NoticeService;
    
    @Controller("adminNoticeController")
    @RequestMapping("/admin/board/notice/") 
    public class NoticeController {
    	
    	@Autowired
    	private NoticeService service;
    	// NoticeService : 컨트롤러가 필요로하는 기능을 집합해놓은 인터페이스 
    	
    	@RequestMapping("list") //list,detail,edit,reg
    	public String list(){
    		
    		List<Notice> list = service.getList();
    		
    		return "admin.board.notice.list";
    	}
    	
    	@RequestMapping("detail") //list,detail,edit,reg
    	public String detail(){
    		
    		Notice notice = service.get(1);
    		
    		return "admin.board.notice.detail";
    	}
    	
    	@RequestMapping("reg") //list,detail,edit,reg
    	public String reg(){
    		
    		return "admin.board.notice.reg";
    	}
    	
    }
    

     

     

    NoticeService.java

    package com.newlecture.web.service;
    
    import java.util.List;
    
    import com.newlecture.web.entity.Notice;
    
    public interface NoticeService {
    
    	List<Notice> getList();
    
    	Notice get(int id);
    
    }
    

     

    서비스를 구현한 구현체 NoticeServiceImp.java

    package com.newlecture.web.service;
    
    import java.util.List;
    
    import org.springframework.beans.factory.annotation.Autowired;
    
    import com.newlecture.web.dao.NoticeDao;
    import com.newlecture.web.entity.Notice;
    
    public class NoticeServiceImp implements NoticeService{
    	
    	@Autowired
    	private NoticeDao noticeDao;
    	
    	@Override
    	public List<Notice> getList() {
    
    		List<Notice> list = noticeDao.getList();
    
    		return list;
    	}
    
    	@Override
    	public Notice get(int id) {
    		
    		Notice notice = noticeDao.get(id);
    		
    		return notice;
    	}
    
    }
    

     

    NoticeDao.java

    package com.newlecture.web.dao;
    
    import java.util.List;
    
    import com.newlecture.web.entity.Notice;
    
    public interface NoticeDao {
    
    	List<Notice> getList();
    
    	Notice get(int id);
    
    }
    

    Mybatis를 쓴다면 Dao의 구현을 클래스로 만들 필요가 없다.

     

    Dao의 구현체 구현하기

     

    Mybatis

    mySQL

    @Mapper 사용 ioc컨테이너에 추가

    @Select 사용

    NoticeDao.java

    package com.newlecture.web.dao;
    
    import java.util.List;
    
    import org.apache.ibatis.annotations.Mapper;
    import org.apache.ibatis.annotations.Select;
    
    import com.newlecture.web.entity.Notice;
    
    @Mapper
    public interface NoticeDao {
    	@Select("select * form notice")
    	List<Notice> getList();
    	
    	Notice get(int id);
    }
    

     

    데이터베이스 연결 설정 예시

     


    스프링의 객체 사용방법

    Dependency

    product의 상대적인 이름

    부품으로 사용되는 객체를 말한다.

     

    인터페이스를 통해서 실제 구현체를 분리 

    분리하게 되면 협업에 바람직한 모델이 된다.

     

    Has A 방법

    주입형의 사용관계

    객체를 외부에서 만들어 꽂아서 사용하는 방법

    Class Frame{
    	private A a; 
        
        public Frame(A a){ //외부에 있는 A객체를 꽂아서 사용 Constructor Injection
        	this.a = a;
        }
        
         public void setA(A a){ //Setter Injection
        	this.a = a;
        }
    }

    객체를 직접 사용하지 않고 인터페이스를 통해 사용한다.

     

    DI

    Spring은 만들어달라고 하는 지시서를 받아 실제 객체를 만들어서 담아둔다.

    담는 그릇 -> 부붐결합 방식이 역행 -> IOC 컨테이너

    @Component - 객체 생성

      @Controller

      @Service

      @Repository

      @Configuration

    @Autowired - 관계를 연결

     

     

    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기
    loading