SpringBoot에 MyBatis 설정법
1. 작업환경
IDE : IntelliJ 2024.3.1
Language : Java
Type : Gradle -Goovy
JDK : jbr-17
Java : 17
Package : Jar

Spring Boot : 3.4.3
dependency :

dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:3.0.4'
compileOnly 'org.projectlombok:lombok'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
runtimeOnly 'org.postgresql:postgresql'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter-test:3.0.4'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
implementation 'org.springframework.boot:spring-boot-starter-validation'
}
2.디렉토리 구조
빨간박스친 부분만 생성 및 수정해줍니다.

3. application.yml
application.yml은 resources 밑에 위치해야합니다.
처음엔 application.properties파일이 있습니다.
이 application.properties를 application.yml 로 이름 변경 후 아래와 같이 작성합니다.
spring:
# PostgreSQL DB 설정
datasource:
driver-class-name: org.postgresql.Driver
url: jdbc:postgresql://db서버주소
username: db아이디
password: db비번
mybatis:
# MyBatis 설정
config-location: classpath:mybatis/mybatis-config.xml # mybatis-config.xml 경로 설정
type-aliases-package: com.springboot.demo # 상위 패키지 지정
mapper-locations: classpath:/mapper/**/*.xml #resources 밑의 어떤폴더 밑의 mapper.xml 경로
server:
port: 8080
4.VO
model 폴더를 생성후 그 아래에 위치시킵니다.
/**
* TemplateVO 클래스
* - 템플릿 정보를 관리하는 VO 객체
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class TemplateVO {
private String msurDt;
private String measDtm;
private double totInflowFlux;
}
5.Service
service폴더를 생성후 아래에 위치시킵니다.
/**
* [ 템플릿 설명 ]
* - 해당 파일은 **ServiceImpl 내에서 구현된 구현체를 사용하기 위한 인터페이스 입니다.
* - 해당 파일의 기능은 구현체에서 작성한 비즈니스 로직을 Controller 내에서 호출하기 위한 interface 입니다.
*
* @author Jaewonlee
* @since 2025.03.10
*/
public interface TemplateService {
List<TemplateVO> selectTemplateList();
}
6.ServiceImpl
service파일와 같은 위치에 위치시킵니다.
/**
* TemplateServiceImpl 클래스
* - TemplateService 인터페이스를 구현한 클래스
* - 비즈니스 로직을 작성하여 Controller에서 호출하도록 설정
*/
@Service
public class TemplateServiceImpl implements TemplateService {
@Autowired
TemplateMapper tm;
/**
* Template 리스트 값 조회
*
* @return List<TemplateVO> 반환값
*/
@Transactional(readOnly = true)
@Override
public List<TemplateVO> selectTemplateList() {
return tm.selectTemplateList();
}
}
7.Mapper
mapper폴더를 생성 후 아래에 위치시킵니다.
@Mapper
public interface TemplateMapper {
/**
* Template 리스트 조회
*
* @return TemplateVO 리스트
*/
List<TemplateVO> selectTemplateList();
}
8.Controller
controller 폴더를 생성 후 아래에 위치시킵니다.
/**
* [ 템플릿 설명 ]
* - 해당 파일은 Restful API 형태로 URL 관리하는 파일입니다
* - 뷰 자체만을 리턴해주거나 API 호출에 대한 처리를 해줍니다.
* [ Annotation 설명 ]
* - @Slf4j : 로그를 위해 사용하는 Annotation
* - @RestController: Restful API 구조에서 JSON 타입으로 데이터를 반환 받기 위해 사용하는 Annotation
* - @Controller: Spring MVC 패턴을 사용하기 위한 Annotation
* - @RequestMapper: Controller URL Default
*
* @author lee
* @since 2025.03.10
*/
@Slf4j
@RequestMapping("/test")
@Controller
public class TemplateController {
@Autowired
private TemplateService templateService;
/**
* [API] 템플릿 리스트 출력 함수
*
* @return ApiResponseWrapper<List < TemplateVO>> : 응답 결과 및 응답 코드 반환
*/
@PostMapping("select")
public ResponseEntity<List<TemplateVO>> selectPtnList() {
List<TemplateVO> resultList = templateService.selectTemplateList();
return new ResponseEntity<>(resultList, HttpStatus.OK);
}
}
9.mybtis-config.xml
resources 아래에 mybatis폴더를 생성 후
그 아래에 mybatis-config.xml 파일을 생성합니다.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD MyBatis 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 기타 설정들 -->
<settings>
<!-- 예시: 언더스코어를 카멜 케이스로 변환 -->
<setting name="mapUnderscoreToCamelCase" value="true"/>
<!-- 파라미터에 Null 값이 있을 경우 에러 처리 -->
<setting name="jdbcTypeForNull" value="VARCHAR"/>
</settings>
<!-- 별칭을 명시적으로 지정 -->
<typeAliases>
<!-- TemplateVO 클래스에 대한 별칭 지정 -->
<typeAlias type="com.springboot.demo.template.model.TemplateVO" alias="Template"/>
<!-- 여기에 필요한 alias 추가작성-->
</typeAliases>
</configuration>
10.mapper.xml
resource아래에 mapper 폴더를 만들고
그 아래에 기능에 맞는 폴더를 만들고
그 아래에 mapper.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.springboot.demo.template.mapper.TemplateMapper">
<!-- SQL 쿼리 정의 -->
<select id="selectTemplateList" resultType="Template">
SELECT
컬럼,
컬럼
FROM 내테이블
ORDER BY 컬럼 DESC LIMIT 1;
</select>
</mapper>
11.test

반응형
'백엔드 > 🍃 SpringBoot' 카테고리의 다른 글
| SpringSecurity + JWT 에서 nginx health-check 요구시 문제 (0) | 2025.04.01 |
|---|---|
| Springboot | 생성자관련 어노테이션 (0) | 2025.03.13 |
| JPA | DAO 설계 (0) | 2025.01.13 |
| JPA | 리포지토리 인터페이스 설계 (0) | 2025.01.12 |
| @GeneratedValue(strategy = GenerationType.IDENTITY) 전략 제대로 이해하기 (0) | 2025.01.10 |