안녕하세요. 오늘은 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 되는지 확인합니다.
postgreSQL 설치 및 설정 local Server 설정 및 DataBase, Table 생성, Data Insert까지 아래 URL로 들어가시면 보실 수 있습니다.
https://nazzang19.tistory.com/category/%EA%B0%9C%EB%B0%9C/PostgreSQL
이상 Gradle 프로젝트에 MyBatis 설정하는 방법에 대해 알아보았습니다.
'개발 > JAVA' 카테고리의 다른 글
[JAVA] 스프링 부트(Spring Boot) 그래들(Gradle) 프로젝트(Project) 인터셉터(Interceptor)적용하기 (2) | 2024.04.25 |
---|---|
[JAVA] gradle 프로젝트 lombok @Slf4j log 설정 및 사용법 (4) | 2024.04.05 |
[JAVA] SpringToolSuite4 Gradle 프로젝트에 lombok 추가 하기 (19) | 2024.03.25 |
[JAVA] Window에 Gradle 설치 및 환경 변수 설정하는 방법 (29) | 2024.03.22 |
[JAVA] WINDOW에 JAVA 설치 JDK 17 시스템 환경 변수 설정 (30) | 2024.03.19 |