์ง๋ ํฌ์คํ
์์ ๊ธฐ๋ณธ์์ฑ์ ๋๋ ๋กฌ๋ณต@NoArgsArgument
๋ฅผ ์ฌ์ฉํ์ฌ ๋งคํํ ๊ฒฝ์ฐ ์ฃผ์ํ ์ ๊ณผ ํด๊ฒฐ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด์์ต๋๋ค.
์ง๋ ํฌ์คํ ์
[MyBatis - ๐ ๏ธTroubleShooting] ๊ธฐ๋ณธ ์์ฑ์์ ๊ฐ์ฒด ๋งคํ์ ์ฃผ์ํ ์ (ํน์ ์ปฌ๋ผ์ด null๋ก ๋งคํ๋์ง ์๋ ํ์)
์์ ํ์ธํ ์ ์์ต๋๋ค.
์ด๋ฒ ํฌ์คํ ์ ์ ๊ฐ ํ๋ก์ ํธ์์ ์ ์ฉํ ํด๊ฒฐ ๋ฐฉ๋ฒ ์ค ํ๋์ธ Mybatis์ camelCase ์๋ ๋ณํ ์ค์ ๊ธฐ๋ฅ์ ์ ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
๋งค๋ฒ ์ง์ alias๋ฅผ ์ ์ด์ฃผ๊ฑฐ๋, column์ ์ง์ ์ง์ ํด์ฃผ๊ธด ๋๋ฌด๋ ๊ท์ฐฎ๊ณ ์์ฐ์ฑ์ด ๋จ์ด์ง๋๋ค.
๋คํํ Mybatis์์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ธ๋์ค์ฝ์ด(_)๋ก ๊ตฌ๋ถ๋ ์ปฌ๋ผ๋ช ์ ์๋ฐ์ ์นด๋ฉ ํ๊ธฐ๋ฒ(camelCase)์ ๋ง๊ฒ ์๋ ๋ณํํด์ฃผ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ณ ์์ต๋๋ค.
ํด๋น ๊ธฐ๋ฅ์ ์ ์ฉํ๋ ๋ฐฉ๋ฒ์ 2๊ฐ์ง๊ฐ ์์ต๋๋ค.
1. .yml
๋๋ .properties
๋ก ์ ์ฉ
2. .xml
Mybatis ์ค์ ํ์ผ๋ก ์ ์ฉ
.yml
๋๋ .properties
๋ก ์ ์ฉ.yml
mybatis:
...
configuration:
mapUnderscoreToCamelCase: true
.properties
db.driver=com.mysql.jdbc.Driver
db.host=jdbc:mysql://localhost:3306/mysql?serverTimezone=UTC&allowPublicKeyRetrieval=true&useSSL=false
db.username=root
db.password=root
๊ธฐ๋ณธ ์ธ์ ๊ฒฝ๋ก์ธ resources
์๋ mabatis-config.xml
์ด๋ฆ์ผ๋ก ๋ง์ด๋ฐํฐ์ค ์ค์ ํ์ผ์ ์์ฑํ๋ฉด ์๋์ผ๋ก springboot๊ฐ ์ธ์ํฉ๋๋ค.
๋ค์๊ณผ ๊ฐ์ด camelCase ์ค์ ์ ์ถ๊ฐํ๋ฉด, camelCase ๋ณ์๋ค์ด๋ฐ์ ์ฌ์ฉํด๋ ์๋์ผ๋ก ์ ๋งคํํด์ค๋๋ค.
<?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="mapUnderscoreToCamelCase" value="true" />
</settings>
</configuration>
๊ธฐ๋ณธ ๊ฒฝ๋ก๊ฐ ์๋ ๋ค๋ฅธ ๊ฒฝ๋ก์ ์ค์ ํ์ผ์ ์์ฑํ๋ค๋ฉด, ๊ทธ ๊ฒฝ๋ก๋ฅผ ์๋ ค์ค์ผ ํฉ๋๋ค.
๋ค์๊ณผ ๊ฐ์ด config-location
๊ฒฝ๋ก๋ฅผ ์ง์ ์ง์ ํ ์ ์์ต๋๋ค.
mybatis:
mapper-locations: classpath:/mappers/**.xml
config-location : classpath:/config/mybatis-config.xml
์ฃผ์ํ ์ ์, mapper-locations๋ *
์์ผ๋์นด๋๋ฅผ ์ฌ์ฉํ ๋ณต์ ๊ฒฝ๋ก๋ก ์ง์ ์ด ๊ฐ๋ฅํ์ง๋ง,
config-location
์ฆ ์ค์ ํ์ผ์ ๊ฒฝ๋ก๋ ํ์ผ ์ด๋ฆ์ ํฌํจํด ๋ฑ ํ๋๋ง ์ง์ ํ ์ ์์ต๋๋ค.
์ฐธ๊ณ org.mybatis.spring.boot.autoconfigure.MybatisProperties.java
- mapperLocations
์ง์ MyBatisProperties ํด๋์ค์ ์ฝ๋๋ฅผ ํ์ธํ๋ฉด ์๋์ ๊ฐ์ด ๊ตฌ์ฑ๋์ด ์๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.public void setMapperLocations(String[] mapperLocations) { this.mapperLocations = mapperLocations; }
- config-location
public void setConfigLocation(String configLocation) { this.configLocation = configLocation; }
์ ์ ๊ฒฝ์ฐ, Mybatis์ ๊ด๋ จ๋ ์ค์ ์ ํ๋์ ํ์ผ์์ ์ค์ ์ง์คํ์ฌ ๊ด๋ฆฌ ํ๋ ๊ฒ์ด ์ข์ ๊ฒ ๊ฐ์ mybatis-config.xml
ํ์ผ์ ๋ฐ๋ก ์์ฑํ์ฌ ์ ์ฉํ๊ธฐ๋ก ํ์ต๋๋ค.
๊ทธ ๊ฒฐ๊ณผ, mybatis-config.xml
์ camelCase ์ค์ ๊ณผ ๊ธฐ๋ณธ์์ฑ์๋ฅผ ์ฌ์ฉํ์ฌ
์ง์ column ๋ช
์๋ alias ๋ช
์ ์์ด camelCase ํฌํจ ์๋์ผ๋ก ๊ฐ์ ๋ค์ด๋ฐ์ ๋ณ์-์ปฌ๋ผ ์ ์ธ์ํ์ฌ ๋งคํํ ์ ์์์ต๋๋ค.
์ ์์ ์ผ๋ก ๋งคํ์ด ๋ ๋ชจ์ต์ ํ์ธํ ์ ์์ต๋๋ค.