ピットレコードを踏む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過度の構成は、ゴマを拾い、スイカを失うことにつながります
たとえば、これらの構成の一部は他の場所に表示されます。実際、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