개발/JAVA

[JAVA] Spring Boot Gradle 프로젝트 postgreSQL 설정 및 MyBatis 설정

TaeDy.I.T. 2024. 4. 2. 15:38
반응형

안녕하세요. 오늘은 Gradle 프로젝트에 MyBatis 설정하는 방법에 대해 알아보겠습니다.

 

우선 파일 구성 캡처 화면 입니다.

파일 구성
파일 구성

 

1. build.gradle 파일을 찾아 아래 소스를 dependencies 안에 추가합니다.

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-web'
    // log
	implementation 'org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4.1:1.16'
    // mybatis
	implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:3.0.3'
    // lombok
	compileOnly 'org.projectlombok:lombok'
	annotationProcessor 'org.projectlombok:lombok'
    // postgresql
	runtimeOnly 'org.postgresql:postgresql'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
	testImplementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter-test:3.0.3'
}

 

2. application.properties 파일에 postgreSQL 정보를 작성합니다.

# postgresql
spring.datasource.hikari.maximum-pool-size=4
spring.datasource.url=jdbc:postgresql://localhost:5432/gtitdb
spring.datasource.username=본인 DB username
spring.datasource.password=본인 DB password
spring.datasource.driver-class-name=org.postgresql.Driver

 

3. src/main/resources 아래에 mybatis Package(패키지)를 만들고 mybatis-config.xml 파일을 만들고 아래 코드를 작성합니다.

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
	<settings>
<!--		결과 VO 매핑 시, Snake 표기법을 Camel 표기로 자동 변경하여 매핑-->
		<setting name="mapUnderscoreToCamelCase" value="true" />
<!--		query 결과가 Null이면 ""러 변환되지 말고 Null로 받도록 설정-->
		<setting name="callSettersOnNulls" value="true" />
		<setting name="jdbcTypeForNull" value="NULL" />
	</settings>
</configuration>

 

4. MybatisConfig.java 파일을 생성하여 아래 코드를 작성합니다.

저는 config Package(패키지)를 만들고 그 아래에 MybatisConfig.java 파일을 생성 하였습니다.

package com.gtit.api.config;

import javax.sql.DataSource;

import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;

@Configuration
@MapperScan(basePackages = "com.gtit.api.mapper")
public class MybatisConfig {    
    @Bean
    public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
        final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
        sessionFactory.setDataSource(dataSource);
        
        PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
        sessionFactory.setMapperLocations(resolver.getResources("classpath:mapper/**/*.xml"));
        
        Resource myBatisConfig = new PathMatchingResourcePatternResolver().getResource("classpath:mybatis/mybatis-config.xml");
        sessionFactory.setConfigLocation(myBatisConfig);
        
        sessionFactory.setTypeAliasesPackage("com.gtit.api.vo");
        
        return sessionFactory.getObject();
    }

}

 

5. controller Package(패키지) 아래에 TestController.java 파일을 생성 후 아래 코드를 작성합니다.

package com.gtit.api.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import com.gtit.api.service.TestService;
import com.gtit.api.vo.TestVO;

import jakarta.servlet.http.HttpServletRequest;

@RestController
public class TestController {

	@Autowired
	private TestService testService;
	
	@RequestMapping(value = "/testDatabaseConnection", method = RequestMethod.GET)
    public ResponseEntity<?> selectMember(HttpServletRequest request) {
		List<TestVO> result = testService.selectMember();
		
		return ResponseEntity.ok(result);
    }
}

 

7. service Package(패키지) 아래에 TestService.java 파일을 생성 후 아래 코드를 작성합니다.

package com.gtit.api.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.gtit.api.mapper.TestMapper;
import com.gtit.api.vo.TestVO;

@Service
public class TestService {

	@Autowired
	private TestMapper testMapper;

	public List<TestVO> selectMember() {
		List<TestVO> vos = testMapper.selectMember();
		return vos;
	}
}

 

8. mapper Package(패키지) 아래에 TestMapper.java 파일을 생성 후 아래 코드를 작성합니다.

package com.gtit.api.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;

import com.gtit.api.vo.TestVO;

@Mapper
public interface TestMapper {
	List<TestVO> selectMember();
}

 

9. vo Package(패키지) 아래에 TestVO.java 파일을 생성 후 아래 코드를 작성합니다.

package com.gtit.api.vo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class TestVO {

    private int seq;
    private String id;
    private String name;
    private int age;
    private String sexCd;
    private String createDate;
    private String updateDate;
}

 

10. src/main/resources 아래에 mapper Package(패키지)를 만들고 testmapper.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.gtit.api.mapper.TestMapper">

    <select id="selectMember" resultType="com.gtit.api.vo.TestVO">
		select seq 
		     , id 
		     , name
		     , age
		     , sex_cd
		     , create_date
		     , update_date
		  from member
    </select>

</mapper>

 

11. 서버 실행 후 test url로 test로 작성 한 쿼리가 잘 동작하고 데이터가 잘 return 되는지 확인합니다.

MyBatis Test
MyBatis Test

 

 

postgreSQL 설치 및 설정 local Server 설정 및 DataBase, Table 생성, Data Insert까지 아래 URL로 들어가시면 보실 수 있습니다.

https://nazzang19.tistory.com/category/%EA%B0%9C%EB%B0%9C/PostgreSQL

 

'개발/PostgreSQL' 카테고리의 글 목록

개발자가 살아가는 세상이야기

nazzang19.tistory.com

 

 

이상 Gradle 프로젝트에 MyBatis 설정하는 방법에 대해 알아보았습니다.

반응형