JavaのDtoとDaoでDBを検索するサンプルです。
| 確認環境 ・Java 8 ・Eclipse 4.8 |
目次
Dto
- Data Transfer Object、データ・トランスファー・オブジェクトの略です。
- データの格納を目的とします。
- 一般的にゲッターセッターを使用して値を操作します。
- データベースの値をセットする場合は、エンティティとも呼ばれます。
- JavaBeansとも呼ばれます。
- 1つのDtoのインスタンスは、データベースの1行のイメージです。
- 以下は、wikipediaのDTOのリンクです。
https://ja.wikipedia.org/wiki/Data_Transfer_Object
Dao
- Data Access Object、データ・アクセス・オブジェクトの略です。
- データベース等にアクセスしてデータの取得や操作を行います。
- 一般的に、取得した値はDtoを使用して戻します。
- 以下は、wikipediaのDAOのリンクです。
https://ja.wikipedia.org/wiki/Data_Access_Object
Dtoのクラス
Dtoのクラスのサンプルです。
package test1;
public class SyainDto {
private int id;
private String name;
private String romaji;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getRomaji() {
return romaji;
}
public void setRomaji(String romaji) {
this.romaji = romaji;
}
}
4~6行目は、値です。
8~25行目は、値を取得するゲッターと値に設定するセッターです。
Daoのクラス
Daoのクラスのサンプルです。
package test1;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class SyainDao {
private static final String URL
= "jdbc:mysql://localhost:3306/testphp?serverTimezone=JST";
private static final String USER = "root";
private static final String PASS = "";
private static final String SQL
= "select * from syain;";
public List<SyainDto> findAll() {
List<SyainDto> syainList = new ArrayList<>();
try(Connection conn =
DriverManager.getConnection(URL, USER, PASS);
PreparedStatement ps = conn.prepareStatement(SQL)){
try(ResultSet rs = ps.executeQuery()){
while (rs.next()) {
SyainDto sd = new SyainDto();
sd.setId(rs.getInt("id"));
sd.setName(rs.getString("name"));
sd.setRomaji(rs.getString("romaji"));
syainList.add(sd);
}
}
} catch (SQLException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
}
return syainList;
}
}
20行目は、Dtoのクラスのリストを定義しています。
28~31行目は、Dtoのクラスをインスタンス化して、DBから取得した値をセットしています。1つのインスタンスがDBの1行のイメージです。
32行目は、Dtoのインスタンスをリストにセットしています。
実行するクラス
上記クラスを実行するクラスです。
package test1;
import java.util.List;
import test1.SyainDao;
import test1.SyainDto;
public class Test1 {
public static void main(String[] args) {
SyainDao syainDao = new SyainDao();
List<SyainDto> sd = syainDao.findAll();
for (SyainDto s: sd) {
System.out.println(s.getId());
System.out.println(s.getName());
System.out.println(s.getRomaji());
}
}
}
9行目は、Daoのクラスをインスタンス化しています。
10行目は、メソッドを実行しDtoのリストを取得しています。
12~15行目は、拡張for文でDBから取得した値を表示しています。
環境
XAMPPのMySQLを使用しています。
XAMPPをインストールする手順(Windows10)
XAMPP phpMyAdminでデータベースを作成する手順
XAMPP phpMyAdminでテーブルを作成する手順
関連の記事
Java MySQLにJDBC接続してselectするサンプル
Java MySQLにJDBC接続してinsert/update/deleteするサンプル
Java 大量データを登録/更新するサンプル(addBatchメソッド)