Spring

Mybatis - mapUnderscoreToCamelCase

91cm 2018. 7. 30. 20:25

데이터베이스의 전통적인 네이밍 방식은 언더스코어표기법이고

JAVA표준인 네이밍은 카멜표기법이다


그럼 개발을 할때 난감한 상황이 온다..


테이블 컬럼명과 vo의 데이터명이 다르기 때문에 맵핑이안된다!


그럼 어떻게 하냐


Mybatis에서 mapUnderscoreToCamelCase를 설정해 주면 가능하다


ex)

  USER_NAME (DB) - > userName(VO) 이렇게 자동으로 맵핑이된다









프로젝트구조








세팅법


context-mybatis.xml

1
2
3
4
5
6
7
8
9
10
11
12
<?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>
    
 
cs





context-mapper.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
                         http://www.springframework.org/schema/beans/spring-beans.xsd
                        http://www.springframework.org/schema/context
                        http://www.springframework.org/schema/context/spring-context.xsd
                        http://www.springframework.org/schema/aop 
                        http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
                        http://www.springframework.org/schema/tx 
                        http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
                        ">
 
 <!-- name은 sqlSession빈에서 사용할 이름이다, ref는  context-datasource.xml에서 정의한 빈을 참조
         value는 SQL문이 위치할 장소
 -->
 
    <bean id="sqlSession" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="mapperLocations" value="classpath:/sqlmap/*.xml" />
        <property name="configLocation" value="classpath:/spring/context-mybatis.xml"/>
    </bean>
     
    <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate" destroy-method="clearCache">
        <constructor-arg index="0" ref="sqlSession"/>
    </bean
    
    <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <property name="dataSource" ref="dataSource"/>
    </bean>
        
</beans>
 
 
 
cs