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

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

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

JDBC

JDBC(Java DataBase Connectivity)は、Javaとリーレーショナルデータベースに接続させる基本的なAPIです。Java上でSQLステートメントを発行することで、データベースの種類に影響を受ないDB操作を可能とします。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Q&A

解決済

1回答

1426閲覧

Spring+JDBCでCRUD機能を実現したいのですが・・・

usako

総合スコア31

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

JDBC

JDBC(Java DataBase Connectivity)は、Javaとリーレーショナルデータベースに接続させる基本的なAPIです。Java上でSQLステートメントを発行することで、データベースの種類に影響を受ないDB操作を可能とします。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

0グッド

1クリップ

投稿2019/05/22 07:02

編集2019/05/22 07:07

###前提・実現したいこと
Eclipse,Springを使ってJAVAの勉強をしている(超)初心者です。
元々、受講していた通信教育の課題がDBを使用しておらず、
内部にテーブルを保持している構造だったので、それを
MySQL,jDBCで外部化しようとしています。
一覧表示、更新、参照機能だけのシンプルな画面です。
ネット等で参考となりそうなプログラムのコード(下記リンク)を発見
したのですが、Springを使用していると思われるのに、
vold main ~とあり、戸惑っています。
(Spring Frameworkではmainの記載は不要と認識していました)
リンク内のサンプルプログラム(SpringSample.java)の①~④を
AddressBookController.javaに実装できれば、やりたいことが
できると思うのですが・・・
参考となる情報やサイトがありましたら、教えてえください。
諸先輩方、基本的な質問かとは思いますが、何とぞご教授ください
ますよう、お願いいたします。

リンク内容

AddressBookController

1package jp.practice.address; 2 3import java.util.List; 4 5import org.springframework.stereotype.Controller; 6import org.springframework.ui.Model; 7import org.springframework.web.bind.annotation.RequestMapping; 8/**e n d*/ 9 10 11@Controller 12@RequestMapping(value = "/book") 13public class AddressBookController { 14 private static final String INIT = "init"; 15 private static final String REFER = "refer"; 16 private static final String UPDATE = "update"; 17 private static final String LIST = "list"; 18 private static final String INIMSG = "従業員番号を入力してください"; 19 private static final String REFMSG = "情報が取得できました"; 20 private static final String UPDMSG = "情報を更新してください"; 21 private static final String ERRMSG = "該当するデータはありません"; 22 23/**start */ 24// @Autowired 25// private JdbcTemplate jdbcTemplate; 26/**e n d*/ 27 28 @RequestMapping(value = "/start") 29 public String init(AddressBookForm form, Model model) { 30/**start */ 31// List<Map<String, Object>> list = jdbcTemplate.queryForList("select * from unit02.addressbook"); 32// model.addAttribute("id", list.get(0).get("id") ); 33// model.addAttribute("name", list.get(0).get("name") ); 34// model.addAttribute("tel", list.get(0).get("tel") ); 35// model.addAttribute("address", list.get(0).get("address") ); 36/**e n d*/ 37 model.addAttribute("message", INIMSG); 38 return INIT; 39 } 40 41 @RequestMapping(params = "reference") 42 public String refer(AddressBookForm form, Model model) { 43 Employee employee = RecordManager.selectEmployee(form.getId()); 44 if (employee != null) { 45 form.setName(employee.getName()); 46 form.setPhone(employee.getPhone()); 47 form.setAddress(employee.getAddress()); 48 model.addAttribute("message", REFMSG); 49 return REFER; 50 } else { 51 model.addAttribute("message", ERRMSG); 52 return INIT; 53 } 54 } 55 56 @RequestMapping(params = "toInit") 57 public String toInit(AddressBookForm form, Model model) { 58 model.addAttribute("message", INIMSG); 59 return INIT; 60 } 61 62 @RequestMapping(params = "update") 63 public String update(AddressBookForm form, Model model) { 64 Employee employee = RecordManager.selectEmployee(form.getId()); 65 if (employee != null) { 66 form.setName(employee.getName()); 67 form.setPhone(employee.getPhone()); 68 form.setAddress(employee.getAddress()); 69 model.addAttribute("message", UPDMSG); 70 return UPDATE; 71 } else { 72 model.addAttribute("message", ERRMSG); 73 return INIT; 74 } 75 } 76 77 @RequestMapping(params = "reflection") 78 public String reflection(AddressBookForm form, Model model) { 79 Employee employee = new Employee(form.getId(), form.getName(), form.getPhone(), form.getAddress()); 80 RecordManager.updateEmployee(employee); 81 model.addAttribute("message", INIMSG); 82 return INIT; 83 } 84 85 @RequestMapping(params = "list") 86 public String list(Model model) { 87 List<Employee> employeeList = RecordManager.getEmployeeList(); 88 model.addAttribute("employeeList", employeeList); 89 model.addAttribute("employeeCount", employeeList.size()); 90 return LIST; 91 } 92

Employee

1package jp.practice.address; 2 3public class Employee { 4 5 private String id; 6 private String name; 7 private String phone; 8 private String address; 9 10 /** 11 * @param id 12 * @param name 13 * @param phone 14 * @param address 15 */ 16 public Employee(String id, String name, String phone, String address) { 17 this.id = id; 18 this.name = name; 19 this.phone = phone; 20 this.address = address; 21 } 22 /** 23 * @return id 24 */ 25 public String getId() { 26 return id; 27 } 28 /** 29 * @param id セットする id 30 */ 31 public void setId(String id) { 32 this.id = id; 33 } 34 /** 35 * @return name 36 */ 37 public String getName() { 38 return name; 39 } 40 /** 41 * @param name セットする name 42 */ 43 public void setName(String name) { 44 this.name = name; 45 } 46 /** 47 * @return phone 48 */ 49 public String getPhone() { 50 return phone; 51 } 52 /** 53 * @param phone セットする phone 54 */ 55 public void setPhone(String phone) { 56 this.phone = phone; 57 } 58 /** 59 * @return address 60 */ 61 public String getAddress() { 62 return address; 63 } 64 /** 65 * @param address セットする address 66 */ 67 public void setAddress(String address) { 68 this.address = address; 69 } 70 /* (非 Javadoc) 71 * @see java.lang.Object#hashCode() 72 */ 73 @Override 74 public int hashCode() { 75 final int prime = 31; 76 int result = 1; 77 result = prime * result + ((id == null) ? 0 : id.hashCode()); 78 return result; 79 } 80 /* (非 Javadoc) 81 * @see java.lang.Object#equals(java.lang.Object) 82 */ 83 @Override 84 public boolean equals(Object obj) { 85 if (this == obj) { 86 return true; 87 } 88 if (obj == null) { 89 return false; 90 } 91 if (!(obj instanceof Employee)) { 92 return false; 93 } 94 Employee other = (Employee) obj; 95 if (id == null) { 96 if (other.id != null) { 97 return false; 98 } 99 } else if (!id.equals(other.id)) { 100 return false; 101 } 102 return true; 103 } 104 105} 106

AddressBookForm

1package jp.practice.address; 2 3public class AddressBookForm { 4 5 private String id; 6 private String name; 7 private String phone; 8 private String address; 9 10 public AddressBookForm() { 11 } 12 13 /** 14 * @return id 15 */ 16 public String getId() { 17 return id; 18 } 19 20 /** 21 * @param id セットする id 22 */ 23 public void setId(String id) { 24 this.id = id; 25 } 26 27 /** 28 * @return name 29 */ 30 public String getName() { 31 return name; 32 } 33 34 /** 35 * @param name セットする name 36 */ 37 public void setName(String name) { 38 this.name = name; 39 } 40 41 /** 42 * @return phone 43 */ 44 public String getPhone() { 45 return phone; 46 } 47 48 /** 49 * @param phone セットする phone 50 */ 51 public void setPhone(String phone) { 52 this.phone = phone; 53 } 54 55 /** 56 * @return address 57 */ 58 public String getAddress() { 59 return address; 60 } 61 62 /** 63 * @param address セットする address 64 */ 65 public void setAddress(String address) { 66 this.address = address; 67 } 68}

Dao

1package jp.practice.address; 2 3import java.util.List; 4 5import org.springframework.jdbc.core.JdbcTemplate; 6 7public class Dao { 8 9 // ①JdbcTemplateの変数宣言 10 private JdbcTemplate jdbcTemplate; 11 12 // ②JdbcTemplateのsetter 13 public void setJdbcTemplate(JdbcTemplate jdbcTemplate){ 14 this.jdbcTemplate = jdbcTemplate; 15 } 16 17 // ③検索処理 18 public List select(){ 19 List ret = jdbcTemplate.queryForList("select * from addressbook", String.class); 20 return ret; 21 } 22}

RecordManager

1package jp.practice.address; 2 3import java.util.ArrayList; 4import java.util.List; 5/**e n d*/ 6 7public class RecordManager { 8 /** 初期値データ */ 9/**start hoshino*/ 10 private static List<Employee> list = new ArrayList<>(); 11 static { 12 list.add(new Employee("200101", "佐藤一郎", "0569-000-1111", "尾張県愛知市舟船町596")); 13 list.add(new Employee("200102", "鈴木次男", "0242-000-2222", "三河県三河市海池2727")); 14 list.add(new Employee("200103", "田中信三郎", "0722-000-3333", "和泉県泉市浜川55")); 15 list.add(new Employee("200104", "高橋四郎", "0729-000-4444", "摂津府兵庫市沼地11")); 16 list.add(new Employee("200105", "渡辺五郎", "0982-000-5555", "筑紫県筑後市泉町2")); 17 list.add(new Employee("200106", "伊藤六次", "0562-000-6666", "信濃県信州市泊町333")); 18 list.add(new Employee("200107", "山本七三", "086-000-7777", "土佐県四国市港町4")); 19 list.add(new Employee("200108", "中村八吉", "0489-000-8888", "薩摩県種島市潮見55")); 20 list.add(new Employee("200109", "小林九兵", "0827-000-9999", "周防県周防市川原66")); 21 list.add(new Employee("200110", "加藤十重", "048-000-1010", "武蔵県北むさし市河岸777")); 22 list.add(new Employee("200111", "ジャック", "0273-000-1111", "相模県相模市堤5")); 23 list.add(new Employee("200112", "山田十二", "075-000-1212", "駿河県南駿河市河口35")); 24 } 25/**e n d*/ 26 27 private RecordManager() { 28 } 29 30 /** 31 * 指定したID のレコードを取得 32 * 33 * @param id 34 * 従業員番号 35 * @return Employee 36 */ 37 public static Employee selectEmployee(String id) { 38 39 int index = list.indexOf(new Employee(id, "", "", "")); 40 if (index < 0) { 41 return null; 42 } 43 return list.get(index); 44 } 45 46 /** 47 * 指定した従業員情報を反映 48 * 49 * @param emp 50 * 従業員情報 51 */ 52 public static void updateEmployee(Employee emp) { 53 int index = list.indexOf(emp); 54 list.set(index, emp); 55 } 56 public static List<Employee> getEmployeeList() { 57 58 return list; 59 } 60}

###試したこと
jdbcで接続してデータを取得し、1件目だけ画面に表示することまではできました。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2019/05/22 15:17

1~4てコードブロックのコメントにかくのは悪手です。 探すところから始めるのは見る気が起きない人が多いです。
usako

2019/05/28 02:01

ご指摘ありがとうございます。 いったん質問を取り下げて問題個所を見直してみます。
guest

回答1

0

自己解決

質問の仕方があまりよくなかったと思うので、いったん取り下げます。

投稿2019/05/28 02:01

usako

総合スコア31

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問