Information Security Study
240214 스트링부트(DB 연동) 본문
스프링부트와 데이터베이스 연동
MySQL Workbench에 blog_test schema 추가
build.gradle dependencies 추가
implementation 'mysql:mysql-connector-java:8.0.33'
application.yml
spring:
mvc:
view:
prefix: /WEB-INF/views/
suffix: .jsp
datasource:
url: jdbc:mysql://127.0.0.1:3306/DB명
username: 계정명
password: 비밀번호
driver-class-name: com.mysql.cj.jdbc.Driver
mybatis:
mapper-locations: classpath:mybatis/mapper/**/**.xml
ConnectionTestRepository.java
package kr.swu.spring_blog.repository;
import org.apache.ibatis.annotations.Mapper;
@Mapper // 빈 컨테이너에 마이바티스 호출 메서드 정의용으로 적재
public interface ConnectionTestRepository {
// getNow() 실행 시 호출할 SQL구문은 xml파일 내부에 작성한다.
String getNow(); // 실제로는 쿼리문이 호출되어야 한다.
}
ConnectionTestMapper.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">
<!-- xml파일에는 SQL구문만 작성하기 때문에 자바 메서드를 선언할 연동 인터페이스를 패키지부터 적어 매칭한다. -->
<mapper namespace="kr.swu.spring_blog.repository.ConnectionTestRepository">
<!-- ConnectionTestRepository 인터페이스의 getNow() 메서드를 호출하면 아래 쿼리문이 실행된다.
리턴타입은 문자열, 자바 내장 자료형은 소문자로만 작성해야 한다. 리스트도 단일 자료처럼 작성한다. -->
<select id="getNow" resultType="string">
SELECT now();
</select>
</mapper>
테스트코드
ConnectionTestRepositoryTest.java
package kr.swu.spring_blog.repository;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest // @Mapper로 적재된 마이바티스 인터페이스 인식을 위해 애너테이션 작성
public class ConnectionTestRepositoryTest {
@Autowired // 테스트코드 작성 시에는 자동주입이 안 되기 때문에 해당 애너테이션을 필드 위에 붙여야 한다.
ConnectionTestRepository connectionTestRepository;
@Test
public void getNowTest() {
System.out.println("얻어온 현재 시간: " + connectionTestRepository.getNow());
}
}
자바에서 DB쪽으로 SQL 쿼리문결과를 요청하는 상황이다.
테스트코드를 실행해 보면 스프링부트와 mysql이 잘 연동이 된 것을 알 수 있다.
'네트워크 캠퍼스 > Spring Boot' 카테고리의 다른 글
240516 REST API (0) | 2024.05.23 |
---|---|
240523 REST API(REST 컨트롤러 구성 및 테스트) (0) | 2024.05.23 |
240208 스프링부트(save(), 폼 저장, 리스트/디테일페이지, 글 삭제) (1) | 2024.02.08 |
240207 스프링부트(인메모리 DB, 테스트 코드, 글 조회/삭제) (1) | 2024.02.07 |
240206 스트링부트(커맨드 객체, URL Path, Model, Redirect/Forward, 3 Tier Architecture) (1) | 2024.02.06 |