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 - 관계를 연결