A、C3P0
C3P0:データベース接続プール・テクノロジー
*手順:
1.インポートジャーパッケージ(2)c3p0-0.9.5.2.jar mchange-コモンズ-のJava-0.2.12.jar、
*インポート・データベースドライバのjarパッケージに忘れてはいけない
2.カスタムプロファイル:
*名前:c3p0.properties-config.xmlのかC3P0
*パス:直接srcディレクトリ内のファイルへ。
*手順:
1.インポートジャーパッケージ(2)c3p0-0.9.5.2.jar mchange-コモンズ-のJava-0.2.12.jar、
*インポート・データベースドライバのjarパッケージに忘れてはいけない
2.カスタムプロファイル:
*名前:c3p0.properties-config.xmlのかC3P0
*パス:直接srcディレクトリ内のファイルへ。
ComboPooledDataSourceコアオブジェクトデータベース接続プールのオブジェクト3を作成
のgetConnection:4.取得接続
*コード:
//データベース接続プールオブジェクトを作成します。
データソースComboPooledDataSource新しい新しいDS =();
//接続が2オブジェクトを取得
(=接続ds.getConnectionコネティカットを);
のgetConnection:4.取得接続
*コード:
//データベース接続プールオブジェクトを作成します。
データソースComboPooledDataSource新しい新しいDS =();
//接続が2オブジェクトを取得
(=接続ds.getConnectionコネティカットを);
二、ドルイド
ステップ1:
1.インポート1.0.9.jarジャーパッケージドルイド
2.カスタムプロファイル:
*プロパティの形式である
*任意の名前を任意のディレクトリに配置することができます呼び出すことができます
。3.負荷プロファイル。プロパティは、
データベース接続プールオブジェクトを取得4:DruidDataSourceFactoryによって植物を取得する
のgetConnection:接続入手5.
*コード:
//ロード・プロファイル3.
プロパティProの新しい新しい=プロパティ();
のInputStream DruidDemo.class.getClassLoader ISを=()。 getResourceAsStream( "druid.properties");
pro.load(IS);
... 4 //接続プールオブジェクト取得
データソースDruidDataSourceFactory.createDataSource DS =(プロ);
... // 5取得接続
接続ds.getConnectionコネティカット=();
2ツールを定義する
クラスを定義JDBCUtils 1
2.は、静的コードブロック装荷構成ファイルを提供する接続プールのオブジェクトを初期化する
方法を提供する
接続方法を得る:1.データベース接続プールを介して接続を取得
2.放出リソース
3に接続プールを得る方法を
1.インポート1.0.9.jarジャーパッケージドルイド
2.カスタムプロファイル:
*プロパティの形式である
*任意の名前を任意のディレクトリに配置することができます呼び出すことができます
。3.負荷プロファイル。プロパティは、
データベース接続プールオブジェクトを取得4:DruidDataSourceFactoryによって植物を取得する
のgetConnection:接続入手5.
*コード:
//ロード・プロファイル3.
プロパティProの新しい新しい=プロパティ();
のInputStream DruidDemo.class.getClassLoader ISを=()。 getResourceAsStream( "druid.properties");
pro.load(IS);
... 4 //接続プールオブジェクト取得
データソースDruidDataSourceFactory.createDataSource DS =(プロ);
... // 5取得接続
接続ds.getConnectionコネティカット=();
2ツールを定義する
クラスを定義JDBCUtils 1
2.は、静的コードブロック装荷構成ファイルを提供する接続プールのオブジェクトを初期化する
方法を提供する
接続方法を得る:1.データベース接続プールを介して接続を取得
2.放出リソース
3に接続プールを得る方法を
三、春JDBC
1.インポートジャーパッケージには、
JdbcTemplateオブジェクトを作成します。2.。データソースのデータソースに依存
* JdbcTemplate JdbcTemplate新しい新しいテンプレート=(DS)。
JdbcTemplateオブジェクトを作成します。2.。データソースのデータソースに依存
* JdbcTemplate JdbcTemplate新しい新しいテンプレート=(DS)。
CRUD操作を行うには3コールJdbcTemplateの道
*更新():DML文を実行します。ステートメントを変更、削除、追加
クエリ結果がマップ・セットとしてパッケージセット、キーとしてカラム名、このパッケージのセットを置くためにマップとして記録された値の値です結果:)(* queryForMapを
*注:このメソッドは、クエリ結果の長さを設定し、 。1のみ
* queryForList():カプセル化し、結果セットリストのクエリの結果セット
*注:各パッケージレコードセット地図には、設定されたマップは、リストにロードされた設定
*クエリ():クエリ結果、結果JavaBeanのようにカプセル化
RowMapperの:*クエリパラメータ
我々は、一般的にBeanPropertyRowMapper実装クラスを使用します*。自動包装を完了するためのJavaBeanデータ
*新しいBeanPropertyRowMapper <タイプ>(タイプの.class)
* queryForObject:クエリ結果は、結果がオブジェクトをラップしている
重合用*一般クエリの関数であり、
*更新():DML文を実行します。ステートメントを変更、削除、追加
クエリ結果がマップ・セットとしてパッケージセット、キーとしてカラム名、このパッケージのセットを置くためにマップとして記録された値の値です結果:)(* queryForMapを
*注:このメソッドは、クエリ結果の長さを設定し、 。1のみ
* queryForList():カプセル化し、結果セットリストのクエリの結果セット
*注:各パッケージレコードセット地図には、設定されたマップは、リストにロードされた設定
*クエリ():クエリ結果、結果JavaBeanのようにカプセル化
RowMapperの:*クエリパラメータ
我々は、一般的にBeanPropertyRowMapper実装クラスを使用します*。自動包装を完了するためのJavaBeanデータ
*新しいBeanPropertyRowMapper <タイプ>(タイプの.class)
* queryForObject:クエリ結果は、結果がオブジェクトをラップしている
重合用*一般クエリの関数であり、
演習:
演習:
*要件:
10,000〜1レビュー第1給与データ
記録2.追加する
レコードの削除追加した
地図のセットとしてパッケージ化4.クエリIDレコード1、
5クエリのすべてのレコードリスト内包
すべてのレコードは、オブジェクトリストのEmpのセットとしてパッケージ化されます6.にクエリを
7、レコードクエリの総数
*要件:
10,000〜1レビュー第1給与データ
記録2.追加する
レコードの削除追加した
地図のセットとしてパッケージ化4.クエリIDレコード1、
5クエリのすべてのレコードリスト内包
すべてのレコードは、オブジェクトリストのEmpのセットとしてパッケージ化されます6.にクエリを
7、レコードクエリの総数
JdbcTemplateDemo2クラス{パブリック
// JUnitのユニットテストの方法は、独立した実行を可能 @ 1つのJDBCTemplate取得ターゲット。 プライベートJdbcTemplate JdbcTemplate新しい新しいテンプレート=(JDBCUtils.getDataSource()); / ** * 1レビュー番号1給与データ10000 * / @Test 公共ボイドTEST1(){ 2 // SQL定義する。 文字列SQL = "更新給与ID = 10000 = 1001 SET EMPを"; .. 3は// SQL実行 INTカウント= template.update(SQL)を、 システム。 out.printlnを(COUNT); } / ** * 2.追加記録 * / @Test ます。public void TEST2(){
SQL =文字列"INSERT INTOのEMP(上記ID、ENAME、DEPT_ID上記)の値(,, ???)";
のInt COUNT = template.update(SQL、1015 "郭靖"、10);
のSystem.out.println(COUNT) ; } / ** * 3レコードだけ追加、削除 * / @Test 公共ボイドTest3は(){ ;文字列のSQL = "?WHERE前記ID =上記からの削除をEMP" INT COUNT = template.update(SQL 1015); システム。 out.printlnを(COUNT); } / ** * 4クエリIDレコード1001マップのセットとしてパッケージ *注意:クエリ結果セットに対するこの方法の長さのみとすることができる1。 * / @Test 公共ボイドTEST4() {
文字列のSQL = "ID =またはID = EMPから選択*?";
地図<文字列、オブジェクト>マップ= template.queryForMap(SQL、1001,1002)。
System.out.println(マップ)
// {ID = 1001 ENAME =孙悟空、JOB_ID = 4、MGR = 1004 joindate = 2000年12月17日、給与= 10000.00、ボーナス=ヌル、DEPT_ID = 20} } / ** * 5查询所有记录、将其封装为リスト * / @Test 公共ボイドTEST5(){ 文字列のSQL = "EMP SELECT * FROM"; 一覧<地図<文字列、オブジェクト>>一覧= template.queryForList(SQL); (地図の<string、オブジェクト> stringObjectMap:リスト)のための{ のSystem.out.println(stringObjectMap)。
/ **
* 6查询所有记录、将其封装为のEmp对象的リスト集合
* / @Test 公共ボイドTEST6(){ 文字列のSQL = "EMP SELECT * FROM"。 リスト<Empを>リスト= template.query(SQL、新しいRowMapperの<Empを>(){ @Override 公共のEmp mapRow(ResultSetのRSが、)I int型スローするSQLException { emp表EMP =新しいEmpの(); int型ID = rs.getInt( "ID"); 文字列ENAME = rs.getString( "ENAME"); INT JOB_ID = rs.getInt( "JOB_ID"); INT MGR = rs.getInt( "MGR"); 日joindate = rs.getDate( "joindate 「);
ダブル給与= rs.getDouble( "給与");
ダブルボーナス= rs.getDouble( "ボーナス");
int型DEPT_ID = rs.getInt( "DEPT_ID"); emp.setId(ID)。 emp.setEname(ENAME)。 emp.setJob_id(JOB_ID)。 emp.setMgr(MGR)。 emp.setJoindate(joindate)。 emp.setSalary(給料) emp.setBonus(ボーナス)。 emp.setDept_id(DEPT_ID)。 EMP返します。 } })。 (EMPのEMP:リスト)のための{ のSystem.out.println(EMP)。
}
} / ** * 6すべてのレコードを照会し、リストのEmpオブジェクトの集合としてパッケージ化 * / @Test 公共ボイドtest6_2(){ 列= SQLは"EMP SELECT * FROM"; リスト<Empの>リスト= template.query (SQL、新しい新しいBeanPropertyRowMapper <emp表>(Emp.class)); (EMPのEmp:リスト)について{ System.out.printlnは(EMP); } } / ** * 7レコードの総数問い合わせ * / @Test ます。public void TEST7(){ 列= SQL "EMPからSELECT COUNT(ID)"; ロング合計= template.queryForObject(SQL、Long.class)。
System.out.println(合計)。
} }
SQL =文字列"INSERT INTOのEMP(上記ID、ENAME、DEPT_ID上記)の値(,, ???)";
のInt COUNT = template.update(SQL、1015 "郭靖"、10);
のSystem.out.println(COUNT) ; } / ** * 3レコードだけ追加、削除 * / @Test 公共ボイドTest3は(){ ;文字列のSQL = "?WHERE前記ID =上記からの削除をEMP" INT COUNT = template.update(SQL 1015); システム。 out.printlnを(COUNT); } / ** * 4クエリIDレコード1001マップのセットとしてパッケージ *注意:クエリ結果セットに対するこの方法の長さのみとすることができる1。 * / @Test 公共ボイドTEST4() {
文字列のSQL = "ID =またはID = EMPから選択*?";
地図<文字列、オブジェクト>マップ= template.queryForMap(SQL、1001,1002)。
System.out.println(マップ)
// {ID = 1001 ENAME =孙悟空、JOB_ID = 4、MGR = 1004 joindate = 2000年12月17日、給与= 10000.00、ボーナス=ヌル、DEPT_ID = 20} } / ** * 5查询所有记录、将其封装为リスト * / @Test 公共ボイドTEST5(){ 文字列のSQL = "EMP SELECT * FROM"; 一覧<地図<文字列、オブジェクト>>一覧= template.queryForList(SQL); (地図の<string、オブジェクト> stringObjectMap:リスト)のための{ のSystem.out.println(stringObjectMap)。
/ **
* 6查询所有记录、将其封装为のEmp对象的リスト集合
* / @Test 公共ボイドTEST6(){ 文字列のSQL = "EMP SELECT * FROM"。 リスト<Empを>リスト= template.query(SQL、新しいRowMapperの<Empを>(){ @Override 公共のEmp mapRow(ResultSetのRSが、)I int型スローするSQLException { emp表EMP =新しいEmpの(); int型ID = rs.getInt( "ID"); 文字列ENAME = rs.getString( "ENAME"); INT JOB_ID = rs.getInt( "JOB_ID"); INT MGR = rs.getInt( "MGR"); 日joindate = rs.getDate( "joindate 「);
ダブル給与= rs.getDouble( "給与");
ダブルボーナス= rs.getDouble( "ボーナス");
int型DEPT_ID = rs.getInt( "DEPT_ID"); emp.setId(ID)。 emp.setEname(ENAME)。 emp.setJob_id(JOB_ID)。 emp.setMgr(MGR)。 emp.setJoindate(joindate)。 emp.setSalary(給料) emp.setBonus(ボーナス)。 emp.setDept_id(DEPT_ID)。 EMP返します。 } })。 (EMPのEMP:リスト)のための{ のSystem.out.println(EMP)。
}
} / ** * 6すべてのレコードを照会し、リストのEmpオブジェクトの集合としてパッケージ化 * / @Test 公共ボイドtest6_2(){ 列= SQLは"EMP SELECT * FROM"; リスト<Empの>リスト= template.query (SQL、新しい新しいBeanPropertyRowMapper <emp表>(Emp.class)); (EMPのEmp:リスト)について{ System.out.printlnは(EMP); } } / ** * 7レコードの総数問い合わせ * / @Test ます。public void TEST7(){ 列= SQL "EMPからSELECT COUNT(ID)"; ロング合計= template.queryForObject(SQL、Long.class)。
System.out.println(合計)。
} }