データベース処理と関連する操作のための単純なJavaコード

パッケージutilの。

輸入org.apache.commons.beanutils.BeanUtils。

インポートにjava.lang.reflect.InvocationTargetException;
インポートjava.sqlの。*;
輸入はjava.util.ArrayList;
輸入はjava.util.List;

/ **
処理とデータベース関連の操作のため* DAOベース層
*
* 1.一般的方法更新するため
* 2.一般的なクエリ方法を
* /
publicクラスBaseDao {
/ *
一般的な更新方法:
1. SQL
2.パラメータ同じではありません

プロセス:
1.取得データベース接続オブジェクト
2.前処理SQL文を
SQL文のパラメータを管理する3. [キー]
4. SQL文を実行

メソッドの分析:
公共変更する権限
データベースの操作によって影響を受ける行の戻り値の型int番号
更新メソッド名の
正式なパラメータのリスト:
1. SQL
2. SQLステートメントのパラメータに対応する
。typeパラメータの不確実性を
JavaクラスはすべてObjectクラスですサブクラスは
、データ型などのオブジェクトを選択し
、B。不確実なパラメータの数
、基礎となる配列の
オブジェクトを[]パラメータ

公共INTの更新(文字列のSQL、オブジェクト[]パラメータ)

* /

/ **
* Updateメソッドは、インサートを扱うことができ、更新、対応するSQL文を削除する
*
* @paramの文字列型のSQL文のSQL
パラメータのSQL文の現在のリストに対応する* @paramパラメータ
の影響を受けるライン*の@return MySQLのデータベース操作数
* /
パブリックINT更新(SQL文字列、オブジェクト[]パラメータ){
= 0 AffectedRows INT;
のPreparedStatementのPreparedStatement = NULL;
接続の接続JdbcUtil.getConnection =();

{試みる
のPreparedStatement =のConnection.prepareStatement(SQL)。

/ *
これは、SQL文のパラメータの割り当てがある必要があり
、ここでSQL文?どのように多く、どのように多くのパラメータを決定する必要がありますか?

JDBCを使用する1つの方法は、パラメータメタデータを提供しました!
* /

// SQL文に対応するパラメータの数を取得します
getParameterCount()int型parameterCount = preparedStatement.getParameterMetaDataを( );

前パラメータの割り当てのための// SQL文は、我々は条件の数を決定する必要があります。
(!= nullの&& parameterCountパラメータ== parameters.length)のIF {
//配列をループで使用、処理パラメータに対応するSQL文
については、(int型I = 0;私は<parameters.length; I ++)は、{
がPreparedStatement.setObject( 。+ 1つのI、パラメータ[I]);
}
}

affectedRows = preparedStatement.executeUpdate()。

}キャッチ(のSQLException E){
e.printStackTrace();
}最後に{
JdbcUtil.close(接続、のPreparedStatement)。
}

affectedRowsを返します。
}

/ *
一般的なクエリ分析法の
権威公共修飾子
ジェネリック:
T
戻り値の型が
パス無効
int型パス
リスト<T>
メソッド名
クエリ
、フォームパラメータリスト:
1.文字列SQL
2.パラメータリストに対応するSQL文を、オブジェクト[]パラメータ
3.わからないものを
。一般的なデータ型の特定の制約に対応する
B。パラメータは、特定のクエリに対応する現在のSQL文を決定したクラスのオブジェクト

Tトン大丈夫無駄なスペースは、彼の取得クラスのクラスオブジェクトを使用し、彼らがやりたいです!
クラス... initParameterTypes

クラス<T> CLS
Person.class
T ==>人
CLS ==>は、反射使用して何でも行うことができます
公共<T>リスト<T>クエリ(SQL文字列、オブジェクト[]パラメータ、クラス<T> CLS)
/ *

/ **
*一般的なクエリメソッドは、戻り値は、クラス<T>から指定されたデータ型保持リストのコレクションです
*
SQLのSELECT文処理する* @paramのSQL文を
現在のSQLステートメントに対応する* @paramパラメータは、パラメータ立設
* @paramのCLSクラスクラスオブジェクト指定されたデータ・タイプは、現在、治療を必要とする、基本的なデータタイプが含まれていないされ、[]
* @param <T>ジェネリック、最終的に現在の動作のためのデータ型その
*の@returnリスト収集、指定されたデータを持つ
* /
パブリック<T>リスト<T>クエリ(SQL文字列、オブジェクト[]パラメータ、クラス<T> CLS){
たResultSetたresultSet = NULL;
のPreparedStatementのPreparedStatement = NULL;

リスト<T>リスト=新しいArrayListを<>();

接続の接続= JdbcUtil.getConnection()。

{試みる
のPreparedStatement =のConnection.prepareStatement(SQL)。

INT parameterCount = preparedStatement.getParameterMetaData()getParameterCount()。

IF(!= NULLパラメータ&& parameterCount == parameters.length){
{ため(iは++; iは<parameterCount I = 0 INT)
がPreparedStatement.setObjectを(I + 1、パラメータ[I])。
}
}

// SQLステートメントが実行され、結果セットオブジェクトは、得られた
)(たresultSet = preparedStatement.executeQueryと、

//結果セットのメタデータを取得
するResultSetMetaDataのmetaData = resultSet.getMetaDataを();

//フィールドの現在の結果セットの数を取得
int型columnCountの= metaData.getColumnCountを();

//解析データ
一方(ResultSet.next()){
T = T cls.getConstructor(ヌル).newInstance(NULL)。

以下のために(INT I = 1; I <= columnCountの、iは++){
//获取字段名
文字列COLUMNNAME = metaData.getColumnName(I)。

//割り当てられたクラスのオブジェクトメンバ変数に対応し、対応するデータを削除
BeanUtils.setProperty(T、COLUMNNAME、ResultSet.getObject(COLUMNNAME));
}

list.add(T)。
}
}キャッチ(のSQLException |ないNoSuchMethodException |ないInstantiationException
| IllegalAccessExceptionが|にInvocationTargetException電子){
e.printStackTrace();
}最後に{
JdbcUtil.close(接続、PreparedStatementの、たresultSet)。
}

リストを返します。
}


}

おすすめ

転載: www.cnblogs.com/kongnote/p/11563720.html