티스토리 뷰

반응형

[문제 상황]

Mapper.java 파일을 찾지 못함.

 

 

[에러 내용]

invalid bound statement (not found) Mapper.java 

 

 

[원인]

Mapper Scan이 정상적으로 이뤄지지 않음.

 

 


 

 

[조치 내용]

(1) mybatis 관련 dependency 추가 및 Mapper.java에 @mapper 어노테이션 추가

 

 - 추가한 dependency 내용 

: dependency 추가 후 .m2 폴더에 정상적으로 다운로드 되었는지 확인 및 vscode 재시작.

<!-- mybatis -->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.1.1</version>
</dependency>

 

(2) application.properties에 mapper location 관련 설정내용 추가

 

 - 추가한 설정내용

mybatis.mapper-locations:mapper/*.xml

 

(3) @MapperScan 어노테이션 추가 및 SqlSessionFactory Bean 등록

 

spring boot project의 시작지점인 Application.java 파일에 @MapperScan 어노테이션 추가 및

SqlSessionFactory 생성 및 Bean 등록내용 작성함.

 

 - @MapperScan 어노테이션은 @Mapper로 명시된 interface를 스캔하기 위해 사용하며,

아래 내용과 같이 scan할 basePackage를 명시하여 사용할 수 있다.

 

@MapperScan(value = {"com.introsite.*"})

 - SqlSessionFactory는 sqlSession을 생성할 목적으로 사용된다.

아래 내용은 SqlSessionFactory를 Bean에 등록하는 내용이며, 이 역시 Application.java 파일 내에 작성했다.

@Bean
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception{
    SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
    sessionFactory.setDataSource(dataSource);

    Resource[] res 
= new PathMatchingResourcePatternResolver().getResources("classpath:mappers/*Mapper.xml");
    sessionFactory.setMapperLocations(res);

    return sessionFactory.getObject();
}

 

(4) 재시작 및 정상 조회 확인

 

 

 

[참고 사이트]

: https://hyojun123.github.io/2018/09/14/springboot2/

: https://mybatis.org/spring/ko/factorybean.html

: https://khj93.tistory.com/entry/MyBatis-MyBatis%EB%9E%80-%EA%B0%9C%EB%85%90-%EB%B0%8F-%ED%95%B5%EC%8B%AC-%EC%A0%95%EB%A6%AC

 

 

반응형