Mapper.xml ファイル内の resultType 爆発の問題を解決します: シンボル 'xxx' を解決できません
システム: Win10
JDK: 1.8.0_333
IDEA: 2022.2.4
SpringBoot: 2.7.6
1. 問題の説明
SpringBoot プロジェクトの開発時に、MybatisPlus を使用してエンティティ クラスを返すと、構成された Mapper.xml ファイルの resultType 属性が赤くなり、その上にマウスを置くと、次の図に示すようにプロンプトが表示されます: シンボル 'TmsTb01' を解決できませ
ん
:
対応するマッパー ファイルを開くと、対応するメソッドも人気があることがわかり、その上にマウスを置くと次のプロンプトが表示されます:
Result type not match for select id="selectByTime"
srcType:
targetType: com.electric.srm
次の図に示すように、.entity.tms.TmsTb01 :
2. 問題分析
ここで調べてみたところ、インターネット上でこの問題を引き起こす可能性のあることがさまざまに記載されていることがわかりましたので、私のプロジェクトの状況をここに記載します。
- 1. プロジェクトの実行に問題はありません(コードはすべて正しく、構成は構成されていますが、表示に問題があります)。たとえば、 type-aliases-package: com.electric.srm.entity alias scaning は
ここでは大丈夫です - 2. 冗長または不足しているプラグインはありません(ここでは、他の人がインストールすべきではないプラグインをインストールしている可能性があるか、一部のプラグインが不足していることがわかります。私はここにはいません)
。ロンボク島プラグイン
3. 問題解決
3.1 設定の注釈 (推奨)
返されたエンティティ クラスにアノテーションを追加します: @Alias("TmsTb01")。追加後、 resultType が普及しないことがわかります。
3.2 完全なクラス名の設定
ここで、resultType を完全なクラス名に変更すると、赤みを除去する効果も得られます (テスト済み) が、設定したエイリアス スキャンが非常に愚かであるようですので、この解決策は使用しません
3.3 プラグインの削除
別の解決策は MybatisX プラグインを削除することだとわかりました。このプラグインはとても使いやすいです。この解決策は考えていませんでしたが、うまくいくはずです。
4. イベントの認識
今回、この問題を発見してから対処するまでに2時間ほどかかりましたが、プロジェクトの通常の動作には影響しませんが、このような人気のヒントを見ると、かなり不快で、少し強迫的になってしまいます。ただし、上記の 3 つの解決策は、私の理想的な解決策ではありません。コードは実行でき、エラーが報告されないということは、コードが正しいことを意味すると思います。赤字でエラーの報告が求められるのはなぜですか?
MybatisX の問題がこのエラー レポートの原因である可能性が高いと感じています。後のプラグインがこの問題に対処するように更新されることを願っています。あるいは、誰かがこれは問題ではないと言って、より良い方法を教えてくれることを願っています。解決。
今回問題を解決する過程で、依存関係のバージョンの問題なのか、設定の問題なのかなども考えましたが、結局のところ、まだまだ知識とスキルが不足しています。引き続き勉強していきたいと思います将来少しずつ成長していきます 虫に出会っても心配しないでください 怖がりながらも勇敢に立ち向かってください 粘り強さが勝利です、オーリー。