Maison  >  Article  >  Java  >  Comment résoudre le problème du chargement de Mybatis par TypeAlias ​​​​basé sur SpringBoot

Comment résoudre le problème du chargement de Mybatis par TypeAlias ​​​​basé sur SpringBoot

WBOY
WBOYavant
2023-05-25 16:01:06961parcourir

SpringBoot charge TypeAlias ​​​​de Mybatis

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

coller directement. le code :

@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 Lors du démarrage du package, il y a une erreur indiquant que le nom de classe typeAlias ​​​​de mybatis est introuvable

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

La balise dans Mapper :

<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

Façon correcte d'écrire :

<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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer