SpringBootは、無効なバインドされたステートメント(見つからない)によって引き起こされたいくつかの問題を記録するためにピットを踏みました

ピットレコードを踏むSpringBoot

無効なバインドされたステートメントによって引き起こされるいくつかの問題(見つかりません)

SpringBootプロジェクトをうまく構築したら、プラグインを使用してエンティティ、dao、およびマッパーを生成し、最初のコントローラーを書き留めて試してみますが、単純なクエリでエラーが報告されることがわかります。

{
    
    
        "timestamp": "2019-03-18 16:21:48",
        "status": 500,
        "error": "Internal Server Error",
        "message": "Invalid bound statement (not found): com.xxx.dao.UserMapper.selectByPrimaryKey",
        "path": "/test"
    }

調査の結果、マッパーフォルダがtarget / classes / packagenameディレクトリに存在しないことがわかりました。これは悲しいことです。

これで、マッパーの下にxmlファイルをパッケージ化する方法の鍵がわかりました。情報を参照することにより、この問題を解決するには通常2つのアイデアがあることがわかります。

1.マッパーをsrc/main / resourceディレクトリに配置します。これは、デフォルトでこのディレクトリにパッケージ化されます。

2.pomファイル内

<build>

</build>

ノード内に段落を追加します

<resources>
   <resource>
      <directory>src/main/java</directory>
      <includes>
         <include>**/*.xml</include>
      </includes>
      <!-- 是否替换资源中的属性-->
      <filtering>false</filtering>
   </resource>
</resources>

3.パッケージ化するときは、xmlファイルが配置されているマッパーフォルダーをtarget / classes / packagename/ディレクトリに手動でドロップします。あなたはそれを一度投げる必要があります+それを一度実行します

上記の3つの方法のうち、次の2つだけを試しました。上記の方法では、xmlファイルが完全に解放されませんでしたが、他の種類のファイルの保存とパッケージ化が使用されました。これについては後で説明します。

次に、2番目について話しましょう。ここに穴があります

Pit.1過度の構成は、ゴマを拾い、スイカを失うことにつながります

img

たとえば、これらの構成の一部は他の場所に表示されます。実際、src / main / resourcesの下のファイルはパッケージ化されます。図のコメントを解凍すると、xmlファイルとプロパティファイルを除いて、他に何もパッケージ化されていないことがわかります(yml構成を使用している場合は、yml Itにパッケージ化されません)、写真のブロガーは、このコードが良いよりも害を及ぼすことも発見したと推定しています。

ここに問題があります。プロジェクトのリソースの下にxmlファイルとプロパティファイルしかない場合、この構成は無害ですか?はい、それは本当です、テンプレートと静的をパッケージ化できるようです。

xmlパッケージを解決した後、パッケージ化と実行を続行するのが待ちきれませんでしたが、エラーがまだ報告されていることがわかりました。emmmmmmmは、人々を少し大きく感じさせました。シニアのプロジェクトを開き、ymlの下でmybatisも構成されていることを発見しました

mybatis:
  mapper-locations: classpath:com/xx/xxx/mapper/**/*.xml
  type-aliases-package: com.xx.xxx.entity
  configuration:
    cache-enabled: false

Pit.2Mybatisのパス設定には注意が必要です

パスを見たとき、mapper/**/*.xmlどういうわけか自分でマッパーを削除しました。/**/*.xml次のレベルのディレクトリを指すxmlファイルのようですが、ここで削除すると、xml Itはパッケージ化されていますが、daoそれでもマッパーが見つからないか、エラーが報告されます。

血の教訓、子供靴、このパスは次のとおりであることを忘れないでください:パッケージ名/xmlが配置されているディレクトリ/** /*.xml

おすすめ

転載: blog.csdn.net/qq_43842093/article/details/123241356