Une fois Springboot compilé dans un fichier jar puis exécuté sous Linux, il signalera que la classe d'entité correspondant à l'alias de type est introuvable. Il s'agit d'un problème d'analyse du package Springboot.
DefaultVFS de Mybatis est utilisé par défaut pour l'analyse dans le projet. Cependant, dans l'environnement Springboot, DefaultVFS de Mybatis posera des problèmes lors de l'analyse des packages, le VFS ne peut donc être modifié que pour le rendre clair
@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(); }
Le projet springBoot s'exécute normalement sur IDEA mais une erreur se produit après l'exécution après l'empaquetage. ce typeAlias ne trouve pas la classe XX lorsque mybatis analyse Mapper.xml
<select parameterType="XXClass" resultMap="XXMap">
Cette façon d'écrire n'a aucun problème à fonctionner dans IDEA, mais il y a un problème avec l'empaquetage
<select parameterType="cn.test.xxx.XXClass" resultMap="XXMap">
Le paramètreType dans le code doit utiliser le chemin complet, sinon une erreur se produira.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!