58일차(3)/Spring Boot(4) : Boot 에서 DB연동, MyBatis 사용
** DB설정하기
- 새 스프링 스타터 프로젝트 생성


- 기존에 선택했던 2개 + SQL에서 3개! 이렇게 선택

- 프로젝트를 생성하면 pom.xml에 선택한 항목들이 들어가 있다.
- 저 oracle 디펜던시가 이전에는 직접 집어넣어 주었던 ojdbc6.jar를 대체하는 것이다.

application.properties 설정
# Server port setting
server.port=9000
# context path
server.servlet.context-path=/boot04
# oracle DataSource Setting (Connection Pool)
spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@localhost:1521:xe
spring.datasource.username=scott
spring.datasource.password=tiger
# mapper location
mybatis.mapper-locations=classpath:mapper/MemberMapper.xml

- 포트번호 설정, context path 설정
- 이전에 tomcat의 context.xml에 넣었던 것!
- Connection Pool도 이렇게 설정해준다.
- 오라클이 설치되어 있고, scott/tiger 로그인이 가능하면 된다.

- resources 에 mapper 폴더 만들어주기

- others-Mapper 안에서 MyBatis XML Mapper 생성
MemberMapper.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="member">
<select id="getList" resultType="com.sy.boot04.member.dao.MemberDto">
SELECT num, name, addr
FROM member
ORDER BY num ASC
</select>
</mapper>

- 이 mapper를 인식시키는 방법: application.properties 파일에서 입력하기

- 화살표 위치 classpath: 가 resources/ 폴더의 위치이다.
- 이 안에 mapper 폴더, MemberMapper가 있다고 알려준 것!
- 기존에 mapper의 위치를 등록하던 Configuration.xml 문서가 없어도 된다. 자동으로 해준다!
- MyBatis에서 제일 중요한것은 sqlSession이다.
- sqlSession의 참조값을 받아오는 것이 중요!

- servlet-context에서 하던 세팅, 조립 방식이 어느정도 자동화되어 있다.
- dataSource설정(접속 정보)이 맞고, Mapper 위치를 지정하면
알아서 sqlSession을 만들어서 필요한 곳에 집어넣어준다.


- Component scan이 메인메소드가 존재하는 패키지 하위에 알아서 일어난다.
- 알아서 Bean이 되고, session의 값이 전달된다.

- application.properties 가 중요한 역할을 하고있다는 것 알아두기!
- jsp로 포워드 이동해볼 예정
- DB에서 회원정보 불러와서 출력하기!
com.sy.boot04.member.dao 패키지생성
MemberDto
package com.sy.boot04.member.dao;
public class MemberDto {
private int num;
private String name;
private String addr;
public MemberDto() {}
public MemberDto(int num, String name, String addr) {
super();
this.num = num;
this.name = name;
this.addr = addr;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr;
}
}
MemberDao
package com.sy.boot04.member.dao;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
@Repository
public class MemberDao {
@Autowired SqlSession session;
public List<MemberDto> getList(){
return session.selectList("member.getList");
}
}

- 일단 getList 하나만 넣어준다.

- session을 이용해서 select 해오기
MemberRestController
package com.sy.boot04;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import com.sy.boot04.member.dao.MemberDao;
import com.sy.boot04.member.dao.MemberDto;
@RestController
public class MemberRestController {
@Autowired MemberDao dao;
@GetMapping("/member/list")
public List<MemberDto> list(){
return dao.getList();
}
}

- @RestController 가 달려있으면 dao.getList() 에서 리턴해주는 값이 바로 json으로 바뀌어서 응답된다.
- dao 참조값은 Autowired로 들어오는 것!

- member 테이블의 내용이 json으로 바뀌어서 화면상에 바로 응답된다.
'국비교육(22-23)' 카테고리의 다른 글
59일차(2)/Spring Boot(6) : WebConfig 설정, yml 파일 작성하기 (0) | 2022.12.30 |
---|---|
59일차(1)/Spring Boot(5) : Boot에서 jsp 사용하기 (0) | 2022.12.30 |
58일차(2)/Spring Boot(3) : Spring web project 세팅 / Spring Boot 설정 작성법 (0) | 2022.12.29 |
58일차(1)/Spring(22) : 갤러리 게시판 구현 (1) | 2022.12.29 |
57일차(2)/Spring(21) : Transaction, DataAccessException 활용 예제 (1) | 2022.12.28 |