ホームページ  >  記事  >  Java  >  SpringBootに基づいてMybatisをロードするTypeAliasの問題を解決する方法

SpringBootに基づいてMybatisをロードするTypeAliasの問題を解決する方法

WBOY
WBOY転載
2023-05-25 16:01:06957ブラウズ

SpringBoot は Mybatis の TypeAlias をロードします

springboot が jar にコンパイルされて Linux 上で実行されると、タイプ エイリアスに対応するエンティティ クラスが見つからないことが報告されます。これは springboot のパッケージ スキャンの問題です。 。

プロジェクトはデフォルトでスキャンに Mybatis の DefaultVFS を使用しますが、スプリングブート環境では 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 parsing the Mapper.xml typeAlias can not find the XX class

The tag in Mapper:

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

この書き方でもIDEAでの実行には問題ありませんが、パッケージ化に問題があります。

正しい書き方:

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

コード内のparameterTypeにはフルパスを使用する必要があります。そうしないとエラーが発生します。

以上がSpringBootに基づいてMybatisをロードするTypeAliasの問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。