mybatis + SpringBoot 연동시 확인사항
mybatis.mapper-locations=classpath:mybatis/*.xml //mapper.xml의 경로
mybatis.configuration.map-underscore-to-camel-case=true
💡 폴더구조를 보고 mybatis.mapper-locations의 경로확인
<?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.example.demo.sample.mapper.SampleMapper">
<select id="selectTest" resultType="string">
select 'test'
</select>
</mapper>
package com.example.demo.sample.mapper;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface SampleMapper {
// 샘플 조회
String selectTest();
}
💡 namespace의 제대로된 mapper.java경로가 적혀있는지 확인
💡 query의 id가 mapper.java의 함수명과 일치하는지 확인
💡 query의 return이 mapper.java의 return과 일치하는지 확인
💡 mapper.java의 @Mapper확인
package com.example.demo;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@MapperScan(basePackages = {"com.example.demo.sample.mapper"})
@SpringBootApplication
public class Myapp1Application {
public static void main(String[] args) {
SpringApplication.run(Myapp1Application.class, args);
}
}
💡 mapper.java를 찾지못한다면 mapper.java 패키지 기술
@MapperScan(basePackages = {"com.example.demo.sample.mapper"})
dependencies {
// MyBatis
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:3.0.1'
}
💡 일정버전 이상부터는 interface를 활용한 mapper.java를 만드는것을 권유하고 있다. 여러방법을 적용했는데도 해결하지못한다면 버전을 확인하자