ここでは、JSPアプリケーション内でデータベースに対するCRUD操作(作成・読み取り・更新・削除)をJavaコードで実装する方法を解説します。オブジェクト指向設計に基づき、インターフェースと具体的な実装クラスを用いて整理します。
エンティティクラスの定義
public class Learner {
private int learnerId;
private String fullName;
private int gender;
private int age;
private String hometown;
private String institution;
// GetterとSetterメソッド
public int getLearnerId() { return learnerId; }
public void setLearnerId(int learnerId) { this.learnerId = learnerId; }
public String getFullName() { return fullName; }
public void setFullName(String fullName) { this.fullName = fullName; }
public int getGender() { return gender; }
public void setGender(int gender) { this.gender = gender; }
public int getAge() { return age; }
public void setAge(int age) { this.age = age; }
public String getHometown() { return hometown; }
public void setHometown(String hometown) { this.hometown = hometown; }
public String getInstitution() { return institution; }
public void setInstitution(String institution) { this.institution = institution; }
}
データアクセスインターフェース
import java.util.List;
public interface LearnerDao {
boolean insert(Learner learner);
boolean remove(int learnerId);
boolean modify(Learner learner);
Learner find(int learnerId);
List<Learner> searchByName(String keyword);
List<Learner> listAll();
}
レコード追加処理
public boolean insert(Learner learner) {
String query = "INSERT INTO learners (fullName, gender, age, hometown, institution) VALUES (?, ?, ?, ?, ?)";
try (Connection connection = DatabaseUtil.getConnection();
PreparedStatement stmt = connection.prepareStatement(query)) {
stmt.setString(1, learner.getFullName());
stmt.setInt(2, learner.getGender());
stmt.setInt(3, learner.getAge());
stmt.setString(4, learner.getHometown());
stmt.setString(5, learner.getInstitution());
return stmt.executeUpdate() > 0;
} catch (SQLException e) {
e.printStackTrace();
return false;
}
}
レコード削除処理
public boolean remove(int learnerId) {
String query = "DELETE FROM learners WHERE learnerId = ?";
try (Connection connection = DatabaseUtil.getConnection();
PreparedStatement stmt = connection.prepareStatement(query)) {
stmt.setInt(1, learnerId);
return stmt.executeUpdate() > 0;
} catch (SQLException e) {
e.printStackTrace();
return false;
}
}
レコード更新処理
public boolean modify(Learner learner) {
String query = "UPDATE learners SET fullName=?, gender=?, age=?, hometown=?, institution=? WHERE learnerId=?";
try (Connection connection = DatabaseUtil.getConnection();
PreparedStatement stmt = connection.prepareStatement(query)) {
stmt.setString(1, learner.getFullName());
stmt.setInt(2, learner.getGender());
stmt.setInt(3, learner.getAge());
stmt.setString(4, learner.getHometown());
stmt.setString(5, learner.getInstitution());
stmt.setInt(6, learner.getLearnerId());
return stmt.executeUpdate() > 0;
} catch (SQLException e) {
e.printStackTrace();
return false;
}
}
単一レコード取得
public Learner find(int learnerId) {
String query = "SELECT * FROM learners WHERE learnerId = ?";
try (Connection connection = DatabaseUtil.getConnection();
PreparedStatement stmt = connection.prepareStatement(query)) {
stmt.setInt(1, learnerId);
try (ResultSet rs = stmt.executeQuery()) {
if (rs.next()) {
Learner learner = new Learner();
learner.setLearnerId(rs.getInt("learnerId"));
learner.setFullName(rs.getString("fullName"));
learner.setGender(rs.getInt("gender"));
learner.setAge(rs.getInt("age"));
learner.setHometown(rs.getString("hometown"));
learner.setInstitution(rs.getString("institution"));
return learner;
}
}
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
部分一致検索
public List<Learner> searchByName(String keyword) {
List<Learner> results = new ArrayList<>();
String query = "SELECT * FROM learners WHERE fullName LIKE ?";
try (Connection connection = DatabaseUtil.getConnection();
PreparedStatement stmt = connection.prepareStatement(query)) {
stmt.setString(1, "%" + keyword + "%");
try (ResultSet rs = stmt.executeQuery()) {
while (rs.next()) {
Learner learner = new Learner();
learner.setLearnerId(rs.getInt("learnerId"));
learner.setFullName(rs.getString("fullName"));
learner.setGender(rs.getInt("gender"));
learner.setAge(rs.getInt("age"));
learner.setHometown(rs.getString("hometown"));
learner.setInstitution(rs.getString("institution"));
results.add(learner);
}
}
} catch (SQLException e) {
e.printStackTrace();
}
return results;
}
全件取得
public List<Learner> listAll() {
List<Learner> allLearners = new ArrayList<>();
String query = "SELECT * FROM learners";
try (Connection connection = DatabaseUtil.getConnection();
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery(query)) {
while (rs.next()) {
Learner learner = new Learner();
learner.setLearnerId(rs.getInt("learnerId"));
learner.setFullName(rs.getString("fullName"));
learner.setGender(rs.getInt("gender"));
learner.setAge(rs.getInt("age"));
learner.setHometown(rs.getString("hometown"));
learner.setInstitution(rs.getString("institution"));
allLearners.add(learner);
}
} catch (SQLException e) {
e.printStackTrace();
}
return allLearners;
}