일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 배포
- 스프링
- sdk
- spring
- 시큐리티
- string
- springboot
- mysql
- react
- yml
- 앱
- DB
- sqlite
- 시놀로지
- Android
- 이클립스
- Java
- 로또
- sts
- EAS
- sql
- thymeleaf
- 안드로이드
- Navigation
- YAML
- 자바스크립트
- Native
- Admob
- expo
- 폰트
- Today
- Total
Dev JS Blog
Spring boot Starter - DB 연결 과 Mybatis 연동하기! 본문
Spring boot Starter로 DB 를 연결 해보려한다.
Stater..? 가 뭔지 모르는 사람은 참고
2021/02/01 - [IT/스프링] - eclipse STS 로 Spring Boot 프로젝트 시작하기
그럼 바로 DB 연결을 해보자!
Add Starters 클릭
연결할 DB의 Driver를 클릭해준다.
나는 MariaDB에 연결할거니까 MariaDB Driver 로 선택해주고 Finish.
그다음 spring 의 설정파일인 application 파일에 간다.
파일에서 datasource라고 작성해주면 쫘악 나온다.
나는 application.yml 파일을 쓰는데 properties 파일을 쓴다면.. 참고..
2021/02/01 - [IT/스프링] - Spring boot application.properties 를 가독성있게 바꿔보자
많은 설정들이 있지만 필요한 몇가지만 넣고 DB 연결을 할것이다.
driver-class-name 해주고 or 정도만 쳐도 이미 다 완성해준다.
언제나 말하지만 툴을 쓴다면 툴을 언제나 활용하자.
이렇게 설정해주자~
이제는 Mybatis를 설치해보자.
준비물 - Mybatis , lombok Plugin(필수는 아니지만 lombok을 활용할 예정)
아까 위에 처럼 add starters 를 클릭해줘서
lombok과 Mybatis를 설치해줍니다.
1) Bean 만들기
package com.project.login.model;
import lombok.Data;
@Data
public class Login {
private String userId;
private String password;
}
Login.java bean을 생성.
여기서 바로 lombok을 이용합니다.
@Data 는 Lombok 을 이용한 (getter,setter,serialize 등등)을 한번에 해주는 어노테이션 입니다.
2) mapper 만들기
package com.project.login.service;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
import com.project.login.model.Login;
@Mapper
@Repository
public interface LoginRepository {
List<Login> findAll();
}
LoginRepository라는 interface를 만듭니다. @Mapper 와 @Repository 어노테이션을 추가해줍니다.
3) dtd(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.project.login.service.LoginRepository">
<select id="findAll" resultType="com.project.login.model.Login">
SELECT 'a' AS user_id FROM dual
</select>
</mapper>
여기서 namespace 에는 Mapper 경로 쿼리 아이디는 mapper 의 메소드와 일치 시켜줍니다.
resultType 은 1) 파일인 bean 파일 경로를 써줍니다.
dtd 파일의 기본 경로는 resource 하위 입니다.
경로를 바꾸고 싶다면
mybatis:
mapper-locations: mapper/**/*.xml # mapper 기본경로
configuration:
map-underscore-to-camel-case: true
application.yml 에 mapper-locations 에 경로를 지정해주시길 바랍니다.
저의 현재 경로입니다.
그다음 추가한 configuration: map-underscore-to-camel-case: true 얘는
쿼리 컬럼명을 camel 형식으로 변경시켜주는 것입니다.
기본적으로 DB 컬럼명은 언더바를 사용합니다 . 예) user_id
bean 파일이나 JAVA 에서는 보통 camel 형식을 사용합니다. 예) userId
그래서 쿼리 결과와 Bean 변수명이 일치해야 맵핑이 되기 때문에
camel 형식으로 자동 변환 될 수 있도록 설정에 추가해줍니다.
4) service 만들기
package com.project.login.service;
import java.util.List;
import org.springframework.stereotype.Service;
import com.project.login.model.Login;
import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor
@Service //service
public class LoginService {
private final LoginRepository loginRepository;
public List<Login> findAll(){
return loginRepository.findAll();
}
}
@Service 어노테이션 주고
중요! @RequiredArgsConstructor 추가
이 어노테이션이 들어가지 않으면
private final LoginRepository 가 에러가 납니다.
추가로) 이게 에러가 안고쳐지면 lombok 플러그인이 이클립스 툴에 제대로 적용되지 않는 상태입니다.
저도 그래서 꽤나 애를 먹었습니다.
해결법은 나중에 올려보겠습니다.
3) RestController 구현하기
package com.project.login.web;
import java.util.List;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import com.project.login.model.Login;
import com.project.login.service.LoginService;
import lombok.RequiredArgsConstructor;
@Controller
@RequiredArgsConstructor
public class LoginController {
private final LoginService loginService;
@GetMapping("/")
public String index(){
List<Login> list = loginService.findAll();
System.out.println(list);
return "index";
}
}
저는 그냥 controller에 구현하겠습니다.
service 를 @RequiredArgsConstructor 를 이용해서 생성 후 이용해줍니다.
index 페이지에 간다면 System out에 로그가 찍혀야겠지요?
결과)
Login bean객체에 userId의 값이 맵핑이 된걸 볼 수 있습니다.
쿼리에 password 값은 없었기 때문에 null 값으로 나옵니다.
이 구성을 잘 기억하시길 바랍니다.
DTD(xml) -> Mapper(interface) -> Serivce -> Controller
'옛날 창고 > 스프링' 카테고리의 다른 글
spring boot jpa 테이블 생성 (0) | 2021.02.14 |
---|---|
[Spring boot] 이클립스 vue 사용하기! (2) | 2021.02.08 |
Spring boot Thymeleaf 경로 설정 하기 (0) | 2021.02.02 |
Spring boot application.properties 를 가독성있게 바꿔보자 (0) | 2021.02.01 |
Spring boot starter 로 Thymeleaf 사용하기 (0) | 2021.02.01 |