본문 바로가기
프로젝트/스프링

스프링 부트(SpringBoot) DB연결(기본설정)

by redbear0077 2025. 1. 27.
반응형

스프링 부트(SpringBoot) DB연결

 

환경

자바8
인텔리제이
스프링부트
마리아 디비
그레이들(gradle)
타임리프(thymeleaf)
application.properties

 

준비

기본적으로 로컬에 DB설치가 끝나있어야한다.
데이터베이스에 2개의 테이터를 넣고 시작한다.

 

프로젝트 생성

 

패키지 구조
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