Nachdem Springboot in ein JAR kompiliert und dann unter Linux ausgeführt wurde, wird gemeldet, dass die dem Typalias entsprechende Entitätsklasse nicht gefunden werden kann. Dies ist ein Problem beim Scannen von Springboot-Paketen.
Mybatis' DefaultVFS wird standardmäßig zum Scannen im Projekt verwendet. In der Springboot-Umgebung verursacht Mybatis' DefaultVFS jedoch Probleme beim Scannen von Paketen, daher kann das VFS nur geändert werden, um es klarer zu machen
@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(); }
Das SpringBoot-Projekt wird normal auf IDEA ausgeführt, aber nach dem Ausführen nach dem Packen tritt ein Fehler auf. Der Fehler ist ungefähr Dieser TypAlias kann die XX-Klasse nicht finden, wenn Mybatis Mapper.xml analysiert
<select parameterType="XXClass" resultMap="XXMap">
Diese Schreibweise läuft problemlos in IDEA, aber es gibt ein Problem mit der Verpackung
<select parameterType="cn.test.xxx.XXClass" resultMap="XXMap">
Der ParameterType im Code muss den vollständigen Pfad verwenden, sonst tritt ein Fehler auf.
Das obige ist der detaillierte Inhalt vonSo lösen Sie das Problem, dass TypeAlias Mybatis basierend auf SpringBoot lädt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!