前提
以下のテーブル(users)を持ち、格納するのはUserクラスという想定で説明していきます。
usersテーブル
1 2 3 4 5 6 7 8 9 10 11 |
CREATE TABLE IF NOT EXISTS users ( id VARCHAR(50) PRIMARY KEY ,password VARCHAR(100) ,name VARCHAR(50) ,birthday DATE ,age INT ,marrige BOOLEAN ,role VARCHAR(50) ); |
Userクラス
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
import java.util.Date; import lombok.Data; // setter/getterを付けるアノテーション @Data public class User { private String id; private String password; private String name; private Date birthday; private int age; private boolean marrige; private String role; // Default Constructor public User() { } public User(String id, String password, String name, Date birthday, int age, boolean marrige, String role){ this.id = id; this.password = password; this.name = name; this.birthday = birthday; this.age = age; this.marrige = marrige; this.role = role; } } |
準備
DBに接続する処理を実装するクラスの作成
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; public class UserDao { // ①JdbcTemplateをDIしておく @Autowired JdbcTemplate jdbcTemplate; /** * 登録処理 * @param user Userオブジェクト * @return void */ @Override public void register(User user) throws DataAccessException { ... } /** * 更新処理 * @param user Userオブジェクト * @return void */ @Override public void update(User user) throws DataAccessException { ... } /** * 削除処理 * @param userId String usersテーブルのキー * @return void */ @Override public void delete(String userId) throws DataAccessException { ... } } |
INSERT
登録する値を持つ、Userオブジェクトで登録する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
/** * 登録処理 * @param user Userオブジェクト * @return void */ @Override public void register(User user) throws DataAccessException { String sql = "" + "INSERT INTO users(" + "id, password, name, birthday, age, marrige, role) " + "VALUES(?, ?, ?, ?, ?, ?, ?)"; jdbcTemplate.update( sql ,user.getId() ,user.getPassword() ,user.getName() ,user.getBirthday() ,user.getAge() ,user.getMarrige() ,user.getRole()); } |
UPDATE
更新する値を持つ、Userオブジェクトで更新する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
/** * 更新処理 * @param user Userオブジェクト * @return void */ @Override public void update(User user) throws DataAccessException { String sql = "" + "UPDATE users SET " + "password = ? ,name = ? ,birthday = ? ,age = ? ,marrige = ? " + "WHERE" + " id = ?;"; jdbcTemplate.update( sql ,user.getPassword() ,user.getName() ,user.getBirthday() ,user.getAge() ,user.getMarrige() ,user.getId()); } |
DELETE
削除キーを元に、削除する。
1 2 3 4 5 6 7 8 9 10 11 12 |
/** * 削除処理 * @param userId String usersテーブルのキー * @return void */ @Override public void delete(String userId) throws DataAccessException { String sql = "DELETE FROM users WHERE id = ?"; jdbcTemplate.update(sql, userId); } |
まとめ
・@Autowiredアノテーションで、JdbcTemplateをDIする。
・更新系の処理は、JdbcTemplateのupdateメソッドを使う。