(JAVA)複数のレコードをSQLでselectする場合

個人開発用



listとArrayListを使う。

package pg_4_02_2;

import java.util.List;

/**----------------------------------------------------------------------*
 *■■■Sample4_02_2_Sel_BusinessLogicクラス■■■
 *概要:ビジネスロジック(全ユーザーの情報抽出)
 *----------------------------------------------------------------------**/
public class Sample4_02_2_Sel_BusinessLogic {

	//定数
	private static String COMMA = ","; //コンマ

	/**----------------------------------------------------------------------*
	 *■extractionAllメソッド
	 *概要 :全ユーザーの情報を抽出し、コマンドライン上に表示する
	 *引数 :なし
	 *戻り値:なし
	 *----------------------------------------------------------------------**/
	public void extractionAll () {

		//-------------------------------------------
		//データベースへの接続を実施
		//-------------------------------------------

		//DAOクラスをインスタンス化&データを抽出するよう依頼
		Sample4_02_2_Common_DAO dao = new Sample4_02_2_Common_DAO();
		List<Sample4_02_2_Common_DTO> extractedDtoList = dao.selectMemberInfoAll();

		//-------------------------------------------
		//抽出したユーザー情報をコマンドライン上に表示
		//-------------------------------------------
		if(extractedDtoList != null){

			for(int i = 0 ; i < extractedDtoList.size() ; i++){

				//1レコード分のデータを取得&加工(各カラムをコンマ綴りで結合)
				StringBuffer rsbuf = new StringBuffer();
				rsbuf.append(extractedDtoList.get(i).getId());
				rsbuf.append(COMMA);
				rsbuf.append(extractedDtoList.get(i).getName());
				rsbuf.append(COMMA);
				rsbuf.append(extractedDtoList.get(i).getGender());
				rsbuf.append(COMMA);
				rsbuf.append(extractedDtoList.get(i).getAge());
				rsbuf.append(COMMA);
				rsbuf.append(extractedDtoList.get(i).getCourse());

				//加工作成した1レコード分のデータを表示
				System.out.println(rsbuf.toString());

			}
		} else {
			System.out.println("[INFO]該当のユーザー情報を取得できませんでした" ) ;
		}

	}
}


メインメソッド

package pg_4_02_2;

/**----------------------------------------------------------------------*
 *■■■Sample4_02_2_Sel_Mainクラス■■■
 *概要:メイン(ユーザーの情報抽出)
 *----------------------------------------------------------------------**/
public class Sample4_02_2_Sel_Main {
	public static void main (String[] args) {

		//ビジネスロジック(ユーザーの情報抽出)クラスのインスタンス化&メソッド起動
		Sample4_02_2_Sel_BusinessLogic blSel = new Sample4_02_2_Sel_BusinessLogic();
		blSel.extractionAll();

	}
}

DTO

package pg_4_02_2;

/**----------------------------------------------------------------------*
 *■■■Sample4_02_2_Common_DTOクラス■■■
 *概要:DTO(memberテーブル)
 *----------------------------------------------------------------------**/
public class Sample4_02_2_Common_DTO {

	//----------------------------------------------------------------
	//フィールド
	//----------------------------------------------------------------
	private int    id     ;  //ID
	private String name   ;  //名前
	private String gender ;  //性別(男:M/女:F)
	private int    age    ;  //年齢
	private String course ;  //コース

	//----------------------------------------------------------------
	//getter/setter
	//----------------------------------------------------------------

	//getter/setter(対象フィールド:id)
	public int getId() {return id;}
	public void setId(int id) {this.id = id;}

	//getter/setter(対象フィールド:name)
	public String getName() {return name;}
	public void setName(String name) {this.name = name;}

	//getter/setter(対象フィールド:gender)
	public  String getGender() {return gender;}
	public void setGender(String gender) {this.gender = gender;}

	//getter/setter(対象フィールド:age)
	public int getAge() {return age;}
	public void setAge(int age) {this.age = age;}

	//getter/setter(対象フィールド:course)
	public String getCourse() {return course;}
	public void setCourse(String course) {this.course = course;}
}

DAO

package pg_4_02_2;

import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import java.util.ArrayList;


/**----------------------------------------------------------------------*
 *■■■Sample4_02_2_Common_DAOクラス■■■
 *概要:DAO(uzuz_memberテーブル)
 *----------------------------------------------------------------------**/
public class Sample4_02_2_Common_DAO {

	//-------------------------------------------
	//データベースへの接続情報
	//-------------------------------------------

	//JDBCドライバの相対パス
	//※バージョンによって変わる可能性があります(MySQL5系の場合は「com.mysql.jdbc.Driver」)
	String DRIVER_NAME = "com.mysql.cj.jdbc.Driver";

	//接続先のデータベース
	//※データベース名が「test_db」でない場合は該当の箇所を変更してください
	String JDBC_URL    = "jdbc:mysql://localhost/test_db?characterEncoding=UTF-8&serverTimezone=JST&useSSL=false";

	//接続するユーザー名
	//※ユーザー名が「test_user」でない場合は該当の箇所を変更してください
	String USER_ID     = "test_user";

	//接続するユーザーのパスワード
	//※パスワードが「test_pass」でない場合は該当の箇所を変更してください
	String USER_PASS   = "test_pass";


	//----------------------------------------------------------------
	//メソッド
	//----------------------------------------------------------------

	/**----------------------------------------------------------------------*
	 *■selectMemberInfoAllメソッド
	 *概要 :「member」テーブルのレコードをすべて抽出する
	 *引数 :なし
	 *戻り値:抽出データ(List<Sample4_02_2_Common_DTO>型)
	 *----------------------------------------------------------------------**/
	public List<Sample4_02_2_Common_DTO> selectMemberInfoAll(){

		//-------------------------------------------
		//JDBCドライバのロード
		//-------------------------------------------
		try {
			Class.forName(DRIVER_NAME);       //JDBCドライバをロード&接続先として指定
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}

		//-------------------------------------------
		//SQL発行
		//-------------------------------------------

		//JDBCの接続に使用するオブジェクトを宣言
		//※finallyブロックでも扱うためtryブロック内で宣言してはいけないことに注意
		Connection        con = null ;   // Connection(DB接続情報)格納用変数
		PreparedStatement ps  = null ;   // PreparedStatement(SQL発行用オブジェクト)格納用変数
		ResultSet         rs  = null ;   // ResultSet(SQL抽出結果)格納用変数

		//抽出データ(List型)格納用変数
		//※最終的にreturnするため、tryブロック内で宣言してはいけないことに注意
		List<Sample4_02_2_Common_DTO> dtoList = new ArrayList<Sample4_02_2_Common_DTO>();

		try {

			//-------------------------------------------
			//接続の確立(Connectionオブジェクトの取得)
			//-------------------------------------------
			con = DriverManager.getConnection(JDBC_URL, USER_ID, USER_PASS);

			//-------------------------------------------
			//SQL文の送信 & 結果の取得
			//-------------------------------------------

			//発行するSQL文の生成(SELECT)
			StringBuffer buf = new StringBuffer();
			buf.append(" SELECT        ");
			buf.append("   id     ,    ");
			buf.append("   name   ,    ");
			buf.append("   gender ,    ");
			buf.append("   age    ,    ");
			buf.append("   course      ");
			buf.append(" FROM          ");
			buf.append("   uzuz_member ");

			//PreparedStatement(SQL発行用オブジェクト)を生成&発行するSQLをセット
			ps = con.prepareStatement(buf.toString());

			//SQL文の送信&戻り値としてResultSet(SQL抽出結果)を取得
			rs = ps.executeQuery();

			//ResultSetオブジェクトから1レコード分のデータをDTOに格納
			while(rs.next()){
				Sample4_02_2_Common_DTO dto = new Sample4_02_2_Common_DTO();
				dto.setId(     rs.getInt(    "id"     ) );
				dto.setName(   rs.getString( "name"   ) );
				dto.setGender( rs.getString( "gender" ) );
				dto.setAge(    rs.getInt(    "age"    ) );
				dto.setCourse( rs.getString( "course" ) );
				dtoList.add(dto);
			}

		} catch (SQLException e) {
			e.printStackTrace();

		} finally {
			//-------------------------------------------
			//接続の解除
			//-------------------------------------------

			//ResultSetオブジェクトの接続解除
			if (rs != null) {    //接続が確認できている場合のみ実施
				try {
					rs.close();  //接続の解除
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}

			//PreparedStatementオブジェクトの接続解除
			if (ps != null) {    //接続が確認できている場合のみ実施
				try {
					ps.close();  //接続の解除
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}

			//Connectionオブジェクトの接続解除
			if (con != null) {    //接続が確認できている場合のみ実施
				try {
					con.close();  //接続の解除
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
		}

		//抽出データを戻す
		return dtoList;
	}
}