국비교육(22-23)

58일차(3)/Spring Boot(4) : Boot 에서 DB연동, MyBatis 사용

서리/Seori 2022. 12. 29. 23:14

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으로 바뀌어서 화면상에 바로 응답된다.