ホームページ > Java > &#&チュートリアル > SpringBootに基づいてMybatisをロードするTypeAliasの問題を解決する方法

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

WBOY
リリース: 2023-05-25 16:01:06
転載
1019 人が閲覧しました

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 までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート