2023-09-06

1. 문제 발생

image-20230906112908092

Mybatis로 MapperTest 중 EmpList를 forEach로 Sysout하려고 하는데 NullPointerException 에러가 발생함.

1.DB에 COMMIT**및 **SELECT 잘되어 있고 문제없음. image-20230906114327701

2.Emp, mybatis-config, EmpMapper 문제없음. image-20230906114957431

2. 문제 원인

image-20230906144755784

Mapper를 통해 Emp 리스트를 가져왔지만 SELECT한 Emp 값들을 Setter하지 못해 List rEmpList 안에 NULL로 되어있는걸 확인할 수 있다. **Mybatis에서 Emp 클래스는 카멜케이스(CamelCase)로 변수 선언했고 DB테이블은 스네이크케이스(SnakeCase)로 컬럼명을 만들어 Mybatis에서 컬럼명과 같은 변수가 없어서 매핑이 안되는게 문제였다.** 원래 MyBatis는 기본적으로 변수명과 컬럼명을 자동으로 카멜케이스(CamelCase)와 스네이크케이스(SnakeCase)를 매핑해주는데 현재 설정이 안되어있는 것 같다.

3. 문제 해결

image-20230906151307274

mybatis-config.xml에 mapUnderscoreToCamelCase를 true로 설정하면 된다.

<settings>
    <setting name="mapUnderscoreToCamelCase" value="true"/>
</settings> 

image-20230906151458811

댓글남기기