Dependency 추가
Maven
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>
<dependency>
<groupId>org.mariadb.jdbc</groupId>
<artifactId>jdbc:mariadb-java-client</artifactId>
<scope>runtime</scope>
</dependency>
Gradle
dependencies {
//...
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.2.0'
runtimeOnly 'org.mariadb.jdbc:mariadb-java-client:2.7.3'
implementation 'com.github.pagehelper:pagehelper-spring-boot-starter:1.4.1'
//...
}
Property 추가
spring:
datasource:
url: jdbc:mariadb://localhost:3306/{dbname}
username: {username}
password: {password}
mybatis:
config-location: classpath:mybatis/mybatis-config.xml
mapper-locations: classpath:/mybatis/**/*Mapper.xml
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>
<setting name="cacheEnabled" value="true"/>
<setting name="mapUnderscoreToCamelCase" value="true"/>
<!--가져온 컬럼의 데이터가 Null 이어도 Setter Method 를 통해 데이터를 바인딩 한다. -->
<setting name="callSettersOnNulls" value="true"/>
<!--가져온 Row 의 컬럼 데이터 전체가 Null 이어도 컬럼별 NULL 데이터를 생성한다. -->
<setting name="returnInstanceForEmptyRow" value="true"/>
<!-- <setting name="lazyLoadingEnabled" value="true"/>-->
<!-- <setting name="multipleResultSetsEnabled" value="true"/>-->
<!-- <setting name="useColumnLabel" value="true"/>-->
<!-- <setting name="useGeneratedKeys" value="false"/>-->
<!-- <setting name="autoMappingBehavior" value="PARTIAL"/>-->
<!-- <setting name="autoMappingUnknownColumnBehavior" value="WARNING"/>-->
<!-- <setting name="defaultExecutorType" value="SIMPLE"/>-->
<!-- <setting name="defaultStatementTimeout" value="25"/>-->
<!-- <setting name="defaultFetchSize" value="100"/>-->
<!-- <setting name="safeRowBoundsEnabled" value="false"/>-->
<!-- <setting name="mapUnderscoreToCamelCase" value="false"/>-->
<!-- <setting name="localCacheScope" value="SESSION"/>-->
<!-- <setting name="jdbcTypeForNull" value="OTHER"/>-->
<!-- <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>-->
</settings>
<!-- <typeAliases>-->
<!-- <package name="com.tailerbox.data.dto."/>-->
<!-- </typeAliases>-->
</configuration>
- mapUnderscoreToCamelCase : 컬럼명으로 snake case 를 사용하는 경우 필드의 camel case 변수명을 자동변환
※ 주의 : MyBatis 연동이 아닌 Scope (ex. Client -> Controller) 에서는 적용되지 않음.
spring.jackson.property-naming-strategy=SNAKE_CASE << RequestBody 의 경우 해당옵션과 함께 사용
UserMapper.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.tutorial.tailerbox.data.mapper.UserMapper">
<select id="findAll" resultType="HashMap">
select * from users
</select>
</mapper>
UserMapper.java
package com.tutorial.tailerbox.data.mapper;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
import java.util.ArrayList;
import java.util.HashMap;
@Mapper
@Repository
public interface UserMapper {
ArrayList<HashMap<String, Object>> findAll();
}
UserService.java
package com.tutorial.tailerbox.service;
import com.tutorial.tailerbox.data.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
@Service
public class UserService {
UserMapper userMapper;
public UserService(UserMapper userMapper) {
this.userMapper = userMapper;
}
public ArrayList<HashMap<String, Object>> findAll() {
return userMapper.findAll();
}
}
UserController.java
package com.tutorial.tailerbox.controller;
import com.tutorial.tailerbox.service.UserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.HashMap;
@Slf4j
@RestController
@RequestMapping(value = "users")
public class UserController {
UserService userService;
public UserController(UserService userService) {
this.userService = userService;
}
@GetMapping
public ArrayList<HashMap<String, Object>> getUsers() {
ArrayList<HashMap<String, Object>> result = userService.findAll();
log.info("UserController.getUsers");
return result;
}
}
저장소 링크
'Framework > Spring' 카테고리의 다른 글
[Spring] MyBatis Log 설정하기 (0) | 2021.12.16 |
---|---|
[Spring] Get Request 의 파라미터를 객체로 받을 때의 Case Convert (0) | 2021.12.15 |
[Spring] Unit Test (0) | 2021.12.06 |
[Spring] Repository, Pageable, Sort (0) | 2021.12.04 |
[Spring] Timezone 적용 (feat.@JsonFormat) (0) | 2021.12.03 |