반응형
스프링 부트(SpringBoot) DB연결
환경
자바8
인텔리제이
스프링부트
마리아 디비
그레이들(gradle)
타임리프(thymeleaf)
application.properties
준비
기본적으로 로컬에 DB설치가 끝나있어야한다.
데이터베이스에 2개의 테이터를 넣고 시작한다.

프로젝트 생성
- 스피링 부트 웹프로젝트로 생성해야한다.(생성방법 URL)
패키지 구조
src/main/
├── java/
│ ├── common/
│ │ ├── util/ # 공통 유틸리티 클래스
│ ├── mngr/ # 관리자 관련 로직
│ │ ├── controller/
│ │ ├── dao/
│ │ ├── dto/
│ │ └── service/
│ ├── user/ # 사용자 관련 로직
│ │ ├── controller/
│ │ │ └── TestController.java
│ │ ├── dao/
│ │ │ └── TestMapper.java
│ │ ├── dto/
│ │ │ └── TestDTO.java
│ │ └── service/
│ │ └── TestService.java
│ ├── ServletInitializer.java
│ └── SpringtestApplication.java
├── resources/
│ ├── mapper/ # mapper경로설정시 확인해야한다.
│ │ ├── common/
│ │ ├── mngr/
│ │ └── user/
│ │ └── TestMapper.xml
│ ├── templates/
│ │ ├── common/
│ │ ├── mngr/
│ │ ├── user/
│ │ │ └──userHome.html
│ │ └── index.html
│ └── application.properties
├── build.gradle
그레이들 설정
자바 = 8
스프링프레임워크 = 2.7.15
스피링 디팬던시 1.0.15.RELEASE
mariadb jdbc = 3.2.0
mybatis = 2.3.1
thymeleaf
lombok = 1.18.24
plugins {
id 'java'
id 'war'
id 'org.springframework.boot' version '2.7.15'
id 'io.spring.dependency-management' version '1.0.15.RELEASE'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
java {
toolchain {
languageVersion = JavaLanguageVersion.of(8)
}
}
repositories {
mavenCentral()
}
dependencies {
//Spring Boot로 웹 애플리케이션을 개발하기 위한 기본 스타터 패키지
implementation 'org.springframework.boot:spring-boot-starter-web'
//Java 애플리케이션에서 MariaDB 데이터베이스에 연결하기 위한 JDBC 드라이버
implementation 'org.mariadb.jdbc:mariadb-java-client:3.2.0'
//SQL을 직접 작성하여 데이터베이스와 상호작용할 수 있는 ORM 프레임워크
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.3.1'
//Java 코드에서 Getter/Setter, 생성자, toString 등을 자동 생성하여 생산성을 높이는 필수 도구.
implementation 'org.projectlombok:lombok:1.18.24'
//Thymeleaf 기반 웹 애플리케이션을 쉽게 개발하기 위한 필수 의존성.
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
//Thymeleaf의 템플릿 레이아웃을 효율적으로 관리하기 위한 확장 도구.
implementation 'nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect'
annotationProcessor 'org.projectlombok:lombok:1.18.24'
providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}
application.properties설정
classpath:mapper경로의 경우 설정하기에 따라 달라진다(패키지 구조를 참조)
//사용하려는 데이터베이스 드라이버 클래스의 이름을 지정
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
//MariaDB에 연결하기 위한 JDBC URL을 지정
spring.datasource.url=jdbc:mariadb://127.0.0.1:3306/psb?characterEncoding=utf8
//MariaDB 데이터베이스에 접속할 사용자 이름
spring.datasource.username=root
//데이터베이스에 접속할 때 사용하는 비밀번호
spring.datasource.password=1234
//MyBatis가 SQL 쿼리와 매핑 정보를 포함하는 XML 파일의 위치를 지정
mybatis.mapper-locations=classpath:mapper/**/*.xml
//MyBatis가 데이터베이스의 언더스코어 네이밍 컬럼과 Java의 카멜 케이스 네이밍 필드를 자동으로 매핑하도록 설정
mybatis.configuration.map-underscore-to-camel-case=true
DTO생성
lombok사용으로 get, set 사용가능
package com.example.demo.user.dto;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class TestDTO {
private int seq;
private String regDt;
private String useAt;
private String modDt;
private String rgstId;
private String mdfrId;
}
controller생성
상세와 목록을 조회
package com.example.demo.user.controlle;
import com.example.demo.user.dto.TestDTO;
import com.example.demo.user.service.TestService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import java.util.List;
@Controller
public class MainControlle {
@Autowired
private TestService testService;
@GetMapping("/")
public String home(Model model){
model.addAttribute("message", "Hello");
return "index";
}
@GetMapping("/user")
public String userHome(TestDTO testDTO, Model model) throws Exception{
try{
List<TestDTO> testDTOList = testService.selectTestList(testDTO);
testDTO.setSeq(1);
testDTO = testService.selectTest(testDTO);
model.addAttribute("testDTO", testDTO);
model.addAttribute("testDTOList", testDTOList);
} catch (Exception e){
e.printStackTrace();
}
model.addAttribute("message", "User");
return "user/userHome";
}
}
Service생성
package com.example.demo.user.service;
import com.example.demo.user.dao.TestDAO;
import com.example.demo.user.dto.TestDTO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class TestService {
@Autowired
private TestDAO testDAO;
public TestDTO selectTest(TestDTO testDTO) throws Exception {
return testDAO.selectTest(testDTO);
}
public List<TestDTO> selectTestList(TestDTO testDTO) throws Exception {
return testDAO.selectTestList(testDTO);
}
}
DAO생성
interface로 생성
package com.example.demo.user.dao;
import com.example.demo.user.dto.TestDTO;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface TestDAO {
TestDTO selectTest(TestDTO testDTO) throws Exception;
List<TestDTO> selectTestList(TestDTO testDTO) throws Exception;
}
XML생성
사용할 쿼리를 작성해준다.
namespace = DAO경로를 적어준다.
<?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.example.demo.user.dao.TestDAO">
<select id="selectTest" resultType="com.example.demo.user.dto.TestDTO">
select
seq
,reg_dt
,use_at
,mod_dt
,rgst_id
,mdfr_id
from
test_user
where
seq = #{seq}
</select>
<select id="selectTestList" resultType="com.example.demo.user.dto.TestDTO">
select
seq
,reg_dt
,use_at
,mod_dt
,rgst_id
,mdfr_id
from
test_user
</select>
</mapper>
스프링 부트 기본 DB연결 끝
반응형
'프로젝트 > 스프링' 카테고리의 다른 글
스프링 부트(SpringBoot) DB연결(xml설정) (0) | 2025.01.27 |
---|---|
sprin boot 프로젝트 생성 (1) | 2025.01.19 |