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 프로젝트는 IDEA에서는 정상적으로 실행되나 패키징 후 실행 후 오류가 발생하는 정도입니다. mybatis가 Mapper.xml을 구문 분석할 때 해당 typeAlias는 XX 클래스를 찾을 수 없습니다
<select parameterType="XXClass" resultMap="XXMap">
이러한 작성 방법은 IDEA에서 실행하는 데 문제가 없지만 패키징에 문제가 있습니다
<select parameterType="cn.test.xxx.XXClass" resultMap="XXMap">
코드의 매개변수 유형은 전체 경로를 사용해야 합니다. 그렇지 않으면 오류가 발생합니다.
위 내용은 SpringBoot 기반 Mybatis를 로드하는 TypeAlias 문제를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!