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

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

ただいまの
回答率

89.64%

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

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 334

usako

score 25

前提・実現したいこと 

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

リンク内容

package jp.practice.address;

import java.util.List;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
/**e n d*/


@Controller
@RequestMapping(value = "/book")
public class AddressBookController {
    private static final String INIT   = "init";
    private static final String REFER  = "refer";
    private static final String UPDATE = "update";
    private static final String LIST   = "list";
    private static final String INIMSG = "従業員番号を入力してください";
    private static final String REFMSG = "情報が取得できました";
    private static final String UPDMSG = "情報を更新してください";
    private static final String ERRMSG = "該当するデータはありません";

/**start */
//    @Autowired
//   private JdbcTemplate jdbcTemplate;
/**e n d*/

    @RequestMapping(value = "/start")
    public String init(AddressBookForm form, Model model) {
/**start */
//        List<Map<String, Object>> list = jdbcTemplate.queryForList("select * from unit02.addressbook");
//      model.addAttribute("id",      list.get(0).get("id") );
//      model.addAttribute("name",    list.get(0).get("name") );
//      model.addAttribute("tel",     list.get(0).get("tel") );
//      model.addAttribute("address", list.get(0).get("address") );
/**e n d*/
        model.addAttribute("message", INIMSG);
        return INIT;
    }

    @RequestMapping(params = "reference")
    public String refer(AddressBookForm form, Model model) {
        Employee employee = RecordManager.selectEmployee(form.getId());
        if (employee != null) {
            form.setName(employee.getName());
            form.setPhone(employee.getPhone());
            form.setAddress(employee.getAddress());
            model.addAttribute("message", REFMSG);
            return REFER;
        } else {
            model.addAttribute("message", ERRMSG);
            return INIT;
        }
    }

    @RequestMapping(params = "toInit")
    public String toInit(AddressBookForm form, Model model) {
        model.addAttribute("message", INIMSG);
        return INIT;
    }

    @RequestMapping(params = "update")
    public String update(AddressBookForm form, Model model) {
        Employee employee = RecordManager.selectEmployee(form.getId());
        if (employee != null) {
            form.setName(employee.getName());
            form.setPhone(employee.getPhone());
            form.setAddress(employee.getAddress());
            model.addAttribute("message", UPDMSG);
            return UPDATE;
        } else {
            model.addAttribute("message", ERRMSG);
            return INIT;
        }
    }

    @RequestMapping(params = "reflection")
    public String reflection(AddressBookForm form, Model model) {
        Employee employee = new Employee(form.getId(), form.getName(), form.getPhone(), form.getAddress());
        RecordManager.updateEmployee(employee);
        model.addAttribute("message", INIMSG);
        return INIT;
    }

    @RequestMapping(params = "list")
    public String list(Model model) {
        List<Employee> employeeList = RecordManager.getEmployeeList();
        model.addAttribute("employeeList", employeeList);
        model.addAttribute("employeeCount", employeeList.size());
        return LIST;
    }
package jp.practice.address;

public class Employee {

    private String id;
    private String name;
    private String phone;
    private String address;

    /**
     * @param id
     * @param name
     * @param phone
     * @param address
     */
    public Employee(String id, String name, String phone, String address) {
        this.id = id;
        this.name = name;
        this.phone = phone;
        this.address = address;
    }
    /**
     * @return id
     */
    public String getId() {
        return id;
    }
    /**
     * @param id セットする id
     */
    public void setId(String id) {
        this.id = id;
    }
    /**
     * @return name
     */
    public String getName() {
        return name;
    }
    /**
     * @param name セットする name
     */
    public void setName(String name) {
        this.name = name;
    }
    /**
     * @return phone
     */
    public String getPhone() {
        return phone;
    }
    /**
     * @param phone セットする phone
     */
    public void setPhone(String phone) {
        this.phone = phone;
    }
    /**
     * @return address
     */
    public String getAddress() {
        return address;
    }
    /**
     * @param address セットする address
     */
    public void setAddress(String address) {
        this.address = address;
    }
    /* (非 Javadoc)
     * @see java.lang.Object#hashCode()
     */
    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((id == null) ? 0 : id.hashCode());
        return result;
    }
    /* (非 Javadoc)
     * @see java.lang.Object#equals(java.lang.Object)
     */
    @Override
    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }
        if (obj == null) {
            return false;
        }
        if (!(obj instanceof Employee)) {
            return false;
        }
        Employee other = (Employee) obj;
        if (id == null) {
            if (other.id != null) {
                return false;
            }
        } else if (!id.equals(other.id)) {
            return false;
        }
        return true;
    }

}
package jp.practice.address;

public class AddressBookForm {

    private String id;
    private String name;
    private String phone;
    private String address;

    public AddressBookForm() {
    }

    /**
     * @return id
     */
    public String getId() {
        return id;
    }

    /**
     * @param id セットする id
     */
    public void setId(String id) {
        this.id = id;
    }

    /**
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * @param name セットする name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * @return phone
     */
    public String getPhone() {
        return phone;
    }

    /**
     * @param phone セットする phone
     */
    public void setPhone(String phone) {
        this.phone = phone;
    }

    /**
     * @return address
     */
    public String getAddress() {
        return address;
    }

    /**
     * @param address セットする address
     */
    public void setAddress(String address) {
        this.address = address;
    }
}
package jp.practice.address;

import java.util.List;

import org.springframework.jdbc.core.JdbcTemplate;

public class Dao {

    // ①JdbcTemplateの変数宣言
    private JdbcTemplate jdbcTemplate;

    // ②JdbcTemplateのsetter
    public void setJdbcTemplate(JdbcTemplate jdbcTemplate){
        this.jdbcTemplate = jdbcTemplate;
    }

    // ③検索処理
    public List select(){
        List ret = jdbcTemplate.queryForList("select * from addressbook", String.class);
        return ret;
    }
}
package jp.practice.address;

import java.util.ArrayList;
import java.util.List;
/**e n d*/

public class RecordManager {
    /** 初期値データ */
/**start hoshino*/
    private static List<Employee> list = new ArrayList<>();
    static {
        list.add(new Employee("200101", "佐藤一郎", "0569-000-1111", "尾張県愛知市舟船町596"));
        list.add(new Employee("200102", "鈴木次男", "0242-000-2222", "三河県三河市海池2727"));
        list.add(new Employee("200103", "田中信三郎", "0722-000-3333", "和泉県泉市浜川55"));
        list.add(new Employee("200104", "高橋四郎", "0729-000-4444", "摂津府兵庫市沼地11"));
        list.add(new Employee("200105", "渡辺五郎", "0982-000-5555", "筑紫県筑後市泉町2"));
        list.add(new Employee("200106", "伊藤六次", "0562-000-6666", "信濃県信州市泊町333"));
        list.add(new Employee("200107", "山本七三", "086-000-7777", "土佐県四国市港町4"));
        list.add(new Employee("200108", "中村八吉", "0489-000-8888", "薩摩県種島市潮見55"));
        list.add(new Employee("200109", "小林九兵", "0827-000-9999", "周防県周防市川原66"));
        list.add(new Employee("200110", "加藤十重", "048-000-1010", "武蔵県北むさし市河岸777"));
        list.add(new Employee("200111", "ジャック", "0273-000-1111", "相模県相模市堤5"));
        list.add(new Employee("200112", "山田十二", "075-000-1212", "駿河県南駿河市河口35"));
    }
/**e n d*/

    private RecordManager() {
    }

    /**
     * 指定したID のレコードを取得
     *
     * @param id
     *            従業員番号
     * @return Employee
     */
    public static Employee selectEmployee(String id) {

        int index = list.indexOf(new Employee(id, "", "", ""));
        if (index < 0) {
            return null;
        }
        return list.get(index);
    }

    /**
     * 指定した従業員情報を反映
     *
     * @param emp
     *            従業員情報
     */
    public static void updateEmployee(Employee emp) {
        int index = list.indexOf(emp);
        list.set(index, emp);
    }
    public static List<Employee> getEmployeeList() {

        return list;
    }
}

試したこと

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • asahina1979

    2019/05/23 00:17

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

    キャンセル

  • usako

    2019/05/28 11:01

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

    キャンセル

回答 1

check解決した方法

0

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 89.64%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる