前提・実現したいこと
Springbootを使い、更新機能を作りたいのですがなかなか思うようにいきません。
遷移はできているのですがデータがきちんと渡っていないため更新されず悩んでいます。
自分の力では進めることができないので皆様のお力添えをいただきたいです。
発生している問題
更新されないまま遷移する。
SQL
/** 情報更新 **/ @Update("UPDATE TBL_REGIST SET regist_name=#{uName}, regist_representative=#{uRepre}, regist_tel=#{uTel}, regist_fax=#{uFax}, regist_postalcode=#{uPostal}, regist_address1=#{uA1}, WHERE regist_id = #{uId}") void updateSQL01(@Param("uId") String registId, @Param("uName") String uName, @Param("uRepre") String uRepre, @Param("uTel") String uTel, @Param("uFax") String uFax, @Param("uPostal") String uPostal, @Param("uA1") String uA1);
RegistForm.java
package jp.co.lain.information; import java.sql.Timestamp; import lombok.Data; @Data public class RegistForm { private String regist_id; private String regist_name; private String regist_tel; private String regist_fax; private String regist_representative; private String regist_postalcode; private String regist_address1; private Timestamp create_date; }
Controller
@GetMapping("/viewUpdate") public String viewUpdate(Model model, RegistForm registId) { String result = new String(); result = service.updRegistList(registId); model.addAttribute("registForm", registId); return "information/update"; } @PostMapping("/viewUpdateComplete") public String viewUpdateComplete(Model model, String list) { return "information/UpdateComplete"; } }
Service
public String updRegistList(RegistForm registForm) { String result = new String(); sqlMapper.updateSQL01( registForm.getRegist_id(), registForm.getRegist_name(), registForm.getRegist_tel(), registForm.getRegist_fax(), registForm.getRegist_representative(), registForm.getRegist_postalcode(), registForm.getRegist_address1(), registForm.getRegist_address2(), registForm.getRegist_address3(), registForm.getRegist_address4()); return result; } }
update.html
<!doctype html> <html xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>更新画面</title> <script src=“https://yubinbango.github.io/yubinbango/yubinbango.js” charset=“UTF-8”></script> </head> <body> <div style="text-align: center"> <h2 style="text-align: center">情報更新</h2> <hr style="height: 3; background =color: #0000FF" /> <br> 更新する情報を入力してください。 <form th:action="@{/viewUpdatetComplete}" th:object="${registForm}" method="POST" > <table style="margin: 0 auto"> <tr> <td><input type=text size="30" th:field="*{regist_id}" pattern="\d{4}" title="半角数字4桁でご入力ください。" placeholder="例 : 0001" required></input></td> </tr> <tr> <td style="width: 60">企業名</td> <td><input type=text size="30" th:field="*{regist_name}" placeholder="例 : 株式会社A" required></input></td> </tr> <tr> <td style="width: 70">電話番号</td> <td><input type=tel size="30" th:field="*{regist_tel}" pattern="\d{2,4}-\d{3,4}-\d{3,4}" title="半角数字11桁、ハイフンを付けてご入力ください。" placeholder="例 : 090-1234-5678"></input></td> </tr> <tr> <td style="width: 70">FAX</td> <td><input type=tel size="30" th:field="*{regist_fax}" pattern="\d{2,4}-\d{3,4}-\d{3,4}" title="半角数字11桁、ハイフンを付けてご入力ください。" placeholder="例 : 080-1234-5678"></input></td> </tr> <tr> <td style="width: 70">代表者</td> <td><input type=text size="30" th:field="*{regist_representative}" pattern="[^\x20-\x7E]*" title="全角でご入力ください。" placeholder="例 : 山田太郎" required></input></td> </tr> <tr> <td style="width: 70">郵便番号</td> <td><input type=text size="30" th:field="*{regist_postalcode}" pattern="\d{3}-\d{4}" title="3桁の数字、ハイフン、4桁の数字の順でご入力ください。" placeholder="例 : 123-4567" onKeyUp="AjaxZip3.zip2addr(this,'','regist_address1','regist_address1');"></input></td> </tr> <tr> <td style="width: 70">住所1</td> <td><input type=text size="30" th:field="*{regist_address1}" placeholder="例 : 埼玉県さいたま市大宮区1-1-1"></input></td> </tr> <tr> <td colspan=2 style="text-align: center"> <input type="submit" value="更新"></td> </tr> </table> <br><br> <a th:href="@{/viewCompanyInformationList}">一覧へ戻る</a> </form> </div> </body> </html>
updateComplete.html
<!doctype html> <html xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>更新完了画面</title> </head> <body> <div style="text-align: center"> <h2 style="text-align: center">更新完了</h2> <br> 更新が完了しました。 情報一覧へ戻るを押してご確認ください。 <p><a th:href="@{/viewCompanyInformationList}">一覧へ戻る</a></p> </div> </body> </html>
build.grable
plugins { id 'org.springframework.boot' version '2.1.4.RELEASE' id 'java' } apply plugin: 'io.spring.dependency-management' group = 'com.example' version = '0.0.1-SNAPSHOT' sourceCompatibility = '1.8' configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.0.1' compileOnly 'org.projectlombok:lombok' runtimeOnly 'org.springframework.boot:spring-boot-devtools' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' }
本件とは大きく関係あるわけではないですが「挿入」はInsertです。
一字違うと全く別のものとなります。プログラミングにおいては致命的にもなるので気にしてほしいところです。
あと、またSreviceって書いてますね。
以下の内容を説明文に追記お願いしてもよいでしょうか
- pom.xml または、build.gradle の内容を教えてください。
何のライブラリやバージョンを使っているのかが把握したいです。
- 使っているDBライブラリは何かを記載してほしいです。見た感じ MyBatis だと思うのですが、mapper.xml の設定などを教えてください。
- Service class ですが、省略されているようにみえましたができれば省略せずに全体を記載してほしいです。
特に sqlMapper が何のクラスのインスタンスかわかるように記載してほしいです。
- 可能であればRegistForm class の内容も教えてください
ご回答ありがとうございます。
修正致しました。
使っているDBライブラリはMyBatisです。
mapper.xmlがどこにあるのかわからなかったです。。
今わかっている、
build.gradle、Service class、RegistForm classは記載致しました。
修正ありがとうございます。
> 特に sqlMapper が何のクラスのインスタンスかわかるように記載してほしいです。
Service 更新いただいたのですが、sqlMapper インスタンスがどこのクラス由来かわからないままになっていますね。
たぶん SQL とかかれたメソッドのあるファイルで mapper を定義しているのだと思って理解しました。
認識違いでしたら教えてください。
> mapper.xmlがどこにあるのかわからなかったです。。
mapper interface を設定すれば、xml での定義は不要みたいなので、質問者様の環境にはなかったようです。
こちらは私の認識ちがいでしたので、忘れてください。
また、以下の点は修正した方がよさそうです
- html 上で、更新をするときに「action="@{/viewInsurtComplete1}」とありますが、こちらの繊維先がないようです。
- html 上で 「<script src」 の部分が github..io とドットが2つあって読み込めてなさそうです
- Spring のバージョンがだいぶ前のものを使っているようですが、こちらは参考にした資料のバージョンをそのまま使った感じでしょうか。
可能であれば参考にした資料など教えてもらえますでしょうか
誤解を招きそうだったので、補足させてください
> Spring のバージョンがだいぶ前のものを使っている
ここは直してほしいとかではなく、背景を知りたいというのが主旨になります。
このアプリケーションで何をしたかったのかを把握したいのですが、参考資料があるのであれば、
そちらも確認させていただこうと思った次第です
> Service 更新いただいたのですが、sqlMapper インスタンスがどこのクラス由来かわからないままになっていますね。
> たぶん SQL とかかれたメソッドのあるファイルで mapper を定義しているのだと思って理解しました。
> 認識違いでしたら教えてください。
インスタンスの意味が上手く取り入れられないのですが
mybatisのファイル内にsqlmapperが格納されています。
> Spring のバージョンがだいぶ前のものを使っているようですが、こちらは参考にした資料のバージョンをそのまま使った感じでしょうか。
かなり前のバージョンなのですね、知りませんでした。
このSpringでやってくださいと言われたままやっていたので参考資料がどこにあるかも
把握できていないです。お力になれず申し訳ありません。
> - html 上で、更新をするときに「action="@{/viewInsurtComplete1}」とありますが、こちらの繊維先がないようです。
> - html 上で 「<script src」 の部分が github..io とドットが2つあって読み込めてなさそうです
ご指摘ありがとうございます。訂正いたしました。
何度も修正ありがとうございます。
またしても五月雨ですいません、
この質問にすでに回答ついてるのでやりとり不要かもしれませんが、
以下の件についておしてください(最初に聞けばよかった内容なのですが)
registId を表示したい insurt.html はどんな html かおしえてください
insurt.html(=update.html)は更新内容を入力してほしい画面です。
insurtからupdateに名前を変えたので混乱させてしまったら申し訳ないです。
回答2件
あなたの回答
tips
プレビュー