>  기사  >  Java  >  SpringBoot 기반 Mybatis를 로드하는 TypeAlias ​​문제를 해결하는 방법

SpringBoot 기반 Mybatis를 로드하는 TypeAlias ​​문제를 해결하는 방법

WBOY
WBOY앞으로
2023-05-25 16:01:061006검색

SpringBoot는 Mybatis의 TypeAlias를 로드합니다

springboot를 jar로 컴파일한 후 Linux에서 실행하면 유형 별칭에 해당하는 엔터티 클래스를 찾을 수 없다고 보고됩니다. 이는 springboot 패키지 스캐닝의 문제입니다.

Mybatis의 DefaultVFS는 프로젝트에서 기본적으로 스캔에 사용됩니다. 그러나 springboot 환경에서는 Mybatis의 DefaultVFS가 패키지를 스캔할 때 문제를 일으키므로 VFS를 명확하게 하기 위해

직접 붙여넣기만 하면 됩니다. 코드 :

@Bean
    public SqlSessionFactory sqlSessionFactoryBean() throws Exception {
        logger.info("load SpringBootVFS");
        //DefaultVFS在获取jar上存在问题,使用springboot只能修改
        VFS.addImplClass(SpringBootVFS.class);
        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
        sqlSessionFactoryBean.setDataSource(dataSource());
        PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
        Resource[] resources1 = resolver.getResources("classpath*:/mybatis/*.xml");
        Resource[] resources2 = resolver.getResources("classpath*:/mysql/mapper/*.xml");
        Resource[] resources = (Resource[]) ArrayUtils.addAll(resources1,resources2);
        sqlSessionFactoryBean.setMapperLocations(resources);
        sqlSessionFactoryBean.setTypeAliasesPackage("com.xxx.xx.entity");
        return sqlSessionFactoryBean.getObject();
    }

springboot 패키지 시작시 mybatis의 typeAlias ​​클래스명을 찾을 수 없다는 오류가 뜹니다

springBoot 프로젝트는 IDEA에서는 정상적으로 실행되나 패키징 후 실행 후 오류가 발생하는 정도입니다. mybatis가 Mapper.xml을 구문 분석할 때 해당 typeAlias는 XX 클래스를 찾을 수 없습니다

Mapper의 태그:

<select parameterType="XXClass" resultMap="XXMap">

이러한 작성 방법은 IDEA에서 실행하는 데 문제가 없지만 패키징에 문제가 있습니다

올바른 작성 방법:

<select parameterType="cn.test.xxx.XXClass" resultMap="XXMap">

코드의 매개변수 유형은 전체 경로를 사용해야 합니다. 그렇지 않으면 오류가 발생합니다.

위 내용은 SpringBoot 기반 Mybatis를 로드하는 TypeAlias ​​문제를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제