본문 바로가기
개발/Mybatis

Spring + Mybatis + Gradle

by Neya31 2025. 1. 14.
728x90
반응형

 

 

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

안녕하세요. 오늘은 Gradle 프로젝트에 MyBatis 설정하는 방법에 대해 알아보겠습니다. 우선 파일 구성 캡처 화면 입니다. 1. build.gradle 파일을 찾아 아래 소스를 dependencies 안에 추가합니다. dependencies

nazzang19.tistory.com

 

 

안녕하세요. 오늘은 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

 

 

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 설정하는 방법에 대해 알아보았습니다.

반응형

'개발 > Mybatis' 카테고리의 다른 글

[Maven] src/main/java xml 파일 인식 이슈 해결  (0) 2025.01.14
[Log4jdbc] SQL 쿼리 로그 출력  (0) 2025.01.14