質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
DAO(Data Access Object)

DAO(Data Access Object)とは、データベースなどに保存するための操作を実装したオブジェクトのことです。データの永続化機構に抽象化されたインタフェースを提供し、データベースの詳細を隠蔽。ビジネスロジックとデータ操作も分離できます。

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Model

MVCモデルの一部であるModelはアプリケーションで扱うデータとその動作を管理するために扱います。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Q&A

1回答

2776閲覧

【Java】DAOとBeanを用いてUPDATE機能を実装したいのですが...

Kanade_JoinT

総合スコア4

DAO(Data Access Object)

DAO(Data Access Object)とは、データベースなどに保存するための操作を実装したオブジェクトのことです。データの永続化機構に抽象化されたインタフェースを提供し、データベースの詳細を隠蔽。ビジネスロジックとデータ操作も分離できます。

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Model

MVCモデルの一部であるModelはアプリケーションで扱うデータとその動作を管理するために扱います。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

0グッド

0クリップ

投稿2021/09/21 15:03

編集2021/09/21 15:10

いつもお世話になっております。

結論から申し上げますと、DAOのwhile文内およびModelの「dao.execute();」以降の記述方法が分からない状況です。
Output用のBeanも間違っているような気もしております...。

システムとしては、IDを入力して検索ボタンを押せばデータベース上にある既存の情報が表示され、その後修正したい項目を書き直して更新ボタンを押せば情報が更新される...といったものを実装しようとしております。

上記のシステムについては、Modelのみであれば既に実装は出来たのですが、更に実践的にするため、DAOとBeanを用いて実装しようとしているものの、更新機能云々の前にID検索後に既存情報が表示できないというところで詰まっています。

丸投げの質問になり大変恐縮ではございますが、ご教授いただける方がいらっしゃいましたら幸いです。
もし他に必要な情報がございましたらお申し付けください。

以下、汚いコードで大変申し訳ございませんが、一読いただければと思います。

該当のソースコード

Bean

1package estimatePackage.bean; 2 3public class CompanyUpdateInputBean { 4 5 // Input 6 private String company_update_id = ""; 7 8 public String getCompany_update_id() { 9 return company_update_id; 10 } 11 public void setCompany_update_id(String cui) { 12 this.company_update_id = cui; 13 } 14 15}

Bean

1package estimatePackage.bean; 2 3public class CompanyUpdateOutputBean { 4 5 // Output 6 private String company_update_id; 7 private String company_update_name; 8 private String company_update_phone; 9 private String company_update_mail; 10 private String company_update_address; 11 12 public String getCompany_update_id() { 13 return company_update_id; 14 } 15 public void setCompany_update_id(String cui) { 16 this.company_update_id = cui; 17 } 18 public String getCompany_update_name() { 19 return company_update_name; 20 } 21 public void setCompany_update_name(String cun) { 22 this.company_update_name = cun; 23 } 24 public String getCompany_update_phone() { 25 return company_update_phone; 26 } 27 public void setCompany_update_phone(String cup) { 28 this.company_update_phone = cup; 29 } 30 public String getCompany_update_mail() { 31 return company_update_mail; 32 } 33 public void setCompany_update_mail(String cum) { 34 this.company_update_mail = cum; 35 } 36 public String getCompany_update_address() { 37 return company_update_address; 38 } 39 public void setCompany_update_address(String cua) { 40 this.company_update_address = cua; 41 } 42 43}

DAO

1package Dao; 2 3import java.sql.ResultSet; 4import java.sql.Statement; 5 6import cmmon.CommonConnection; 7import estimatePackage.bean.CompanyUpdateInputBean; 8import estimatePackage.bean.CompanyUpdateOutputBean; 9 10public class CompanyUpdateDao { 11 12 private CompanyUpdateInputBean input = new CompanyUpdateInputBean() ; 13 private CompanyUpdateOutputBean output = new CompanyUpdateOutputBean(); 14 15 public CompanyUpdateDao() { 16 17 } 18 19 public void execute() throws Exception { 20 try { 21 22 // データベースに接続 23 CommonConnection con = new CommonConnection(); 24 // ステートメント作成 25 Statement stmt = con.getStmt(); 26 //SQL文の実行結果を格納 27 ResultSet rs = stmt.executeQuery(getSqlPreview()); 28 29 while (rs.next()) { 30 CompanyUpdateOutputBean bean = new CompanyUpdateOutputBean(); 31 bean.setCompany_update_id(rs.getString("ID")); 32 bean.setCompany_update_name(rs.getString("NAME")); 33 bean.setCompany_update_phone(rs.getString("PHONE")); 34 bean.setCompany_update_mail(rs.getString("MALL")); 35 bean.setCompany_update_address(rs.getString("ADLESS")); 36 } 37 38 rs.close(); 39 stmt.close(); 40 41 } catch (Exception e) { 42 e.printStackTrace(); 43 throw e; 44 } 45 } 46 47 private String getSqlPreview() { 48 StringBuffer sb = new StringBuffer(); 49 50 sb.append("SELECT "); 51 sb.append("ID, NAME, PHONE, MALL, ADLESS "); 52 sb.append("FROM COMPANY_TABLE "); 53 sb.append("WHERE NAME "); 54 sb.append("LIKE '%" + input.getCompany_update_id() + "%'"); 55 56 return sb.toString(); 57 } 58 59 public CompanyUpdateInputBean getInput() { 60 return input; 61 } 62 63 public void setInput(CompanyUpdateInputBean input) { 64 this.input = input; 65 } 66 67 public CompanyUpdateOutputBean getOutput() { 68 return output; 69 } 70 71 public void setOutput(CompanyUpdateOutputBean output) { 72 this.output = output; 73 } 74}

以下のModel内のコメントアウト(※try文)部分が今回DAOとBeanで実装したい部分になります。
※SQL文内の誤字(MALLやADLESS等)は無視してください。
※文字数制限のため、一部の箇所は削除しておりますのでご了承ください

Model

1package estimatePackage; 2 3import Dao.CompanyUpdateDao; 4import cmmon.CommonConnection; 5import estimatePackage.bean.CompanyUpdateInputBean; 6 7 8public class PartnerUpdatePageFormAction extends EditFormAction { 9 private String input_company_id; 10 private String partnerUpdateResultPage; 11 private String backTopPage; 12 private String editId; 13 private String editName; 14 private String editPhone; 15 private String editMail; 16 private String editAddress; 17 private String partnerEdit; 18 private String messageArea; 19 20 public String execute() throws Exception { 21 22 23 String result = ""; 24 if (isNotNull(partnerUpdateResultPage)) { 25 result= "returnPartnerEditResultPage1"; 26 } 27 28 if (isNotNull(partnerEdit)) { 29 result= "returnPartnerEditResultPage2"; 30 } 31 32 if (isNotNull(backTopPage)) { 33 result= "returnBackTopPage"; 34 return result; 35 } 36 37 // 検索 or 更新処理 38 if (isNotNull(partnerUpdateResultPage)) { 39 // 検索の場合 40 partnerSelect(); 41 42 } else if (isNotNull(partnerEdit)) { 43 // 更新の場合 44 partnerUpdate(); 45 } 46 47 return result; 48 49 } 50 51 private void partnerSelect() throws Exception { 52 53 CompanyUpdateInputBean companyUpdateInputBean = new CompanyUpdateInputBean(); 54 companyUpdateInputBean.setCompany_update_id(input_company_id); 55 56 CompanyUpdateDao dao = new CompanyUpdateDao(); 57 dao.setInput(companyUpdateInputBean); 58 dao.execute(); 59 60 61// try { 62//// // データベースに接続 63// CommonConnection con = new CommonConnection(); 64// Statement stmt = con.getStmt(); 65// 66// // SQL文発行 67// String SQL = "SELECT ID, NAME, PHONE, MALL, ADLESS FROM COMPANY_TABLE WHERE ID =" + input_company_id; 68// 69// //SQL文の実行結果を格納 70// ResultSet rs = stmt.executeQuery(SQL); 71// 72// while (rs.next()) { 73// // String[] companyist 74// editId = "" + rs.getInt("ID"); 75// editName = rs.getString("NAME"); 76// editPhone = rs.getString("PHONE"); 77// editMail = rs.getString("MALL"); 78// editAddress = rs.getString("ADLESS"); 79// } 80// 81// rs.close(); 82// stmt.close(); 83// 84// } 85// catch (Exception e) { 86// e.printStackTrace(); 87// throw e; 88// } 89 } 90 91 public String getInput_company_id() { 92 return input_company_id; 93 } 94 95 public void setInput_company_id(String input_company_id) { 96 this.input_company_id = input_company_id; 97 } 98 99 public String getPartnerUpdateResultPage() { 100 return partnerUpdateResultPage; 101 } 102 103 public void setPartnerUpdateResultPage(String purp) { 104 this.partnerUpdateResultPage = purp; 105 } 106 107 public String getBackTopPage() { 108 return backTopPage; 109 } 110 111 public void setBackTopPage(String btp) { 112 this.backTopPage = btp; 113 } 114 115 public String getEditId() { 116 return editId; 117 } 118 119 public void setEditId(String editId) { 120 this.editId = editId; 121 } 122 123 public String getEditName() { 124 return editName; 125 } 126 127 public void setEditName(String editName) { 128 this.editName = editName; 129 } 130 131 public String getEditPhone() { 132 return editPhone; 133 } 134 135 public void setEditPhone(String editPhone) { 136 this.editPhone = editPhone; 137 } 138 139 public String getEditMail() { 140 return editMail; 141 } 142 143 public void setEditMail(String editMail) { 144 this.editMail = editMail; 145 } 146 147 public String getEditAddress() { 148 return editAddress; 149 } 150 151 public void setEditAddress(String editAddress) { 152 this.editAddress = editAddress; 153 } 154 155 public String getPartnerEdit() { 156 return partnerEdit; 157 } 158 159 public void setPartnerEdit(String partnerEdit) { 160 this.partnerEdit = partnerEdit; 161 } 162 163 public String getMessageArea() { 164 return messageArea; 165 } 166 167 public void setMessageArea(String messageArea) { 168 this.messageArea = messageArea; 169 } 170}

JSP

1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3<%@ taglib prefix="s" uri="/struts-tags"%> 4 5<!DOCTYPE html> 6<html> 7<head> 8<meta charset="UTF-8"> 9<title>企業検索2</title> 10<link rel="stylesheet" type="text/css" 11 href="/EstimateSystem/StyleSheet/style.css"> 12</head> 13 14<body> 15 <header> 16 <jsp:include page="header_parts.jsp" flush="true" /> 17 </header> 18 19 <section> 20 <div class="save-message-wrapper"> 21 <div class="save-message-container"> 22 <h2> 23 <s:property value="messageArea" /> 24 </h2> 25 </div> 26 </div> 27 28 29 </section> 30 31 <s:form action="PartnerUpdatePageFormAction"> 32 <section> 33 <div class="partner-wrapper"> 34 35 <div class="partner-container"> 36 <div class="partner-name">会社ID</div> 37 <div class="partner-input"> 38 <s:textfield class="input-form" name="input_company_id" /> 39 </div> 40 41 <div class="partner-btn-area"> 42 <s:submit value="検索" name="partnerUpdateResultPage" class="btn" /> 43 <s:submit value="戻る" name="backTopPage" class="btn" /> 44 </div> 45 </div> 46 </div> 47 </section> 48 49 <section> 50 <div class="partner-info-save-wrapper"> 51 <div class="partner-info-save-container"> 52 <div class="partner-input-area"> 53 <table> 54 <tr> 55 <th>ID</th> 56 <td><s:textfield class="input-form" name="editId" 57 placeholder="ID" /></td> 58 </tr> 59 <tr> 60 <th>会社名</th> 61 <td><s:textfield class="input-form" name="editName" 62 placeholder="会社名" /></td> 63 <tr> 64 <tr> 65 <th>電話番号</th> 66 <td><s:textfield class="input-form" name="editPhone" 67 placeholder="電話番号" /></td> 68 </tr> 69 <tr> 70 <th>メールアドレス</th> 71 <td><s:textfield class="input-form" name="editMail" 72 placeholder="メールアドレス" /></td> 73 </tr> 74 <tr> 75 <th>住所</th> 76 <td><s:textfield class="input-form" name="editAddress" 77 placeholder="住所" /></td> 78 </tr> 79 </table> 80 </div> 81 82 <div class="partner-btn-area"> 83 <s:submit value="更新" name="partnerEdit" class="btn" /> 84 </div> 85 </div> 86 </div> 87 </section> 88 </s:form> 89 90 <footer> 91 <jsp:include page="footer_parts.jsp" flush="true" /> 92 </footer> 93 94</body> 95</html>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dodox86

2021/09/21 17:42

そもそもですが、DAOやBeanにする前のコメント化されたモデル中のデータ取得部分で、これはちゃんと要望通り動いていたのでしょうか。 SELECTのSQLで複数のレコードが返るようなコードで、while (rs.next()) でループして回っているにしてはrs.getほにゃらら()で上書きして、最後の1件しか取得できていない気がするのですが。その問題はそのまま質問文中の書きかけのDAO、Beanに引き継がれているように見えます。
guest

回答1

0

SQL の WHERE 節が変わってしまっていますし、output の bean は作っているだけでどこにも行きません。

どのようにデータを取得しどのように結果まで伝えていくかはまず当事者が決めることですから、二つのコードで「こっちとそっちはココが違う」とは指摘できますが「ここからどうすれば…」は無関係の他人には決められません。

投稿2021/09/21 18:38

jimbe

総合スコア12646

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問