public class SQLManager extends Object
SQL文でnvarcharのカラムに対して、リテラル文字列を利用して比較(WHERE句)および代入(SET句)を行う場合は
以下のように記述する必要があります。
update table_name set name = N'名前' where name = N'姓名'リテラル文字列の前にNを付加します。
Nを付加しない場合、文字化けや条件にマッチしないことがあります。
バインド変数'?'を用いる場合は、この問題は発生しません
コンストラクタと説明 |
---|
SQLManager()
SQLマネージャを作成します。
|
SQLManager(String connectionId)
指定された引数を元に、SQLマネージャを作成します。
|
SQLManager(String connectionId,
boolean isGroup)
指定された引数を元に、SQLマネージャを作成します。
|
修飾子とタイプ | メソッドと説明 |
---|---|
int |
delete(String sql,
Collection<Object> parameters)
SQLと、パラメータ配列を渡してdelete文を実行する。
|
int |
delete(String tableName,
SearchCondition condition)
テーブル名とカラムデータ情報を渡してdelete文を実行する。
|
<T> Collection<T> |
fetch(Class<T> modelClass,
String sql,
Collection<Object> parameters,
int start,
int count)
フェッチ処理を行い、取得したデータを自動的にモデルへ格納します。
|
<T> Collection<T> |
fetch(String sql,
Collection<Object> params,
ModelMapper<T> mapper,
int start,
int count)
汎用的な取得処理を行います。
|
int |
getRecordCount(String sql,
Collection<Object> parameters)
レコード数を取得する。
|
int |
getRecordCount(String tableName,
String columnName,
SearchCondition condition)
レコード数を取得する。
|
int |
insert(String sql,
Collection<Object> parameters)
SQLと、パラメータ配列を渡してinsert文を実行する。
|
int |
insert(String tableName,
ColumnValues columnValues)
テーブル名とカラムデータ情報を渡してinsert文を実行します。
|
<T> Collection<T> |
select(Class<T> modelClass,
String sql,
Collection<Object> parameters)
SELECT処理を行い、取得したデータを自動的にモデルへ格納します。
|
<T> Collection<T> |
select(String sql,
Collection<Object> params,
ModelMapper<T> mapper)
汎用的な取得処理を行います。
|
int |
update(String sql,
Collection<Object> parameters)
SQLおよびパラメータ配列を利用してUPDATE文を実行します。
|
int |
update(String tableName,
ColumnValues columnValues,
SearchCondition condition)
テーブル名とカラムデータ情報を渡してupdate文を実行する。
|
public SQLManager() throws NoFilterException, AccessSecurityException
public SQLManager(String connectionId) throws NoFilterException, AccessSecurityException
connectionId
- コネクションID(ログイングループ)AccessSecurityException
NoFilterException
public SQLManager(String connectionId, boolean isGroup) throws NoFilterException, AccessSecurityException
connectionId
- コネクションIDisGroup
- コネクションIDのタイプ(true:ログイングループ / false:システム)AccessSecurityException
NoFilterException
public <T> Collection<T> fetch(String sql, Collection<Object> params, ModelMapper<T> mapper, int start, int count) throws AccessSecurityException, NamingException, SQLException
フェッチのパフォーマンスを向上させるために、このメソッド内でSQL文を加工して、SQLを発行します。 そのため、select文に対してTOP句が利用できません。 ただし、サブクエリに対してはSQL Serverの制約に準じます。 |
T
- 返却されるコレクションの型sql
- 実行するSQL文params
- 指定するパラメータ群mapper
- 取得データを扱うマッパーstart
- 取得開始レコード行count
- 取得レコード数AccessSecurityException
NamingException
SQLException
public <T> Collection<T> select(String sql, Collection<Object> params, ModelMapper<T> mapper) throws AccessSecurityException, NamingException, SQLException
sql
- 実行するSQL文params
- 指定するパラメータ群mapper
- 取得データを扱うマッパーSQLException
NamingException
AccessSecurityException
public int getRecordCount(String tableName, String columnName, SearchCondition condition) throws SQLException, AccessSecurityException, NamingException
tableName
- テーブル名columnName
- カラム名 ("*"不可。必ず指定してください。)condition
- カウントする条件SQLException
AccessSecurityException
NamingException
public int getRecordCount(String sql, Collection<Object> parameters) throws SQLException, AccessSecurityException, NamingException
sql
- SQLparameters
- パラメータSQLException
AccessSecurityException
NamingException
public int delete(String tableName, SearchCondition condition) throws AccessSecurityException, SQLException, NamingException, IllegalArgumentException, BizApiException
tableName
- テーブル名condition
- 更新ターゲットの条件(WHERE句に該当する)NamingException
SQLException
AccessSecurityException
BizApiException
IllegalArgumentException
public int delete(String sql, Collection<Object> parameters) throws AccessSecurityException, SQLException, NamingException
sql
- DELETE文(SQL文)parameters
- パラメータ配列AccessSecurityException
SQLException
NamingException
public int update(String tableName, ColumnValues columnValues, SearchCondition condition) throws AccessSecurityException, SQLException, NamingException, IllegalArgumentException, BizApiException
tableName
- テーブル名columnValues
- カラム/データの情報(SET以降の部分に該当する)condition
- 更新ターゲットの条件(WHERE句に該当する)NamingException
SQLException
AccessSecurityException
BizApiException
IllegalArgumentException
public int update(String sql, Collection<Object> parameters) throws AccessSecurityException, SQLException, NamingException
sql
- UPDATE文(SQL文)parameters
- パラメータ配列AccessSecurityException
SQLException
NamingException
public int insert(String tableName, ColumnValues columnValues) throws AccessSecurityException, SQLException, NamingException, IllegalArgumentException, BizApiException
tableName
- テーブル名columnValues
- カラム/データの情報AccessSecurityException
SQLException
NamingException
BizApiException
IllegalArgumentException
public int insert(String sql, Collection<Object> parameters) throws AccessSecurityException, SQLException, NamingException
sql
- INSERT文(SQL文)parameters
- パラメータ配列AccessSecurityException
SQLException
NamingException
public <T> Collection<T> select(Class<T> modelClass, String sql, Collection<Object> parameters) throws NotExistException, AccessSecurityException, IllegalArgumentException, NamingException, SQLException, InstantiationException, IllegalAccessException, InvocationTargetException
DBからの取得した情報はモデルクラスの各Setterを用いて値を格納します。
Setterメソッド名とDBからの取得したカラム名が以下のルールで一致した場合にモデルへ格納されます。
カラム名がnameである場合、モデルにsetName()メソッドが存在すれば、モデルに格納されます。
またカラム名がuser_nameである場合、モデルにsetUserName()メソッドが存在すれば、モデルに格納されます。
なお、カラム名はすべて小文字変換してから判定します。
上記の方法とは別にカラム名と異なったSetterメソッドでデータを格納したい場合は
GetterおよびSetterメソッドに対して、ColumnMapping
アノテーションを記述することで対応できます。
カラム名がuser_nameのデータに対してをsetName()メソッドを使うようにする場合は以下のように記述します。@ColumnMapping("user_name")
public void setName(String name) {
}
T
- データを格納するモデルクラスmodelClass
- モデルクラスのクラスsql
- SELECT文(SQL文)parameters
- パラメータの配列InvocationTargetException
IllegalAccessException
InstantiationException
SQLException
NamingException
IllegalArgumentException
AccessSecurityException
NotExistException
public <T> Collection<T> fetch(Class<T> modelClass, String sql, Collection<Object> parameters, int start, int count) throws NotExistException, AccessSecurityException, IllegalArgumentException, NamingException, SQLException, InstantiationException, IllegalAccessException, InvocationTargetException
DBからの取得した情報はモデルクラスの各Setterを用いて値を格納します。
Setterメソッド名とDBからの取得したカラム名が以下のルールで一致した場合にモデルへ格納されます。
カラム名がnameである場合、モデルにsetName()メソッドが存在すれば、モデルに格納されます。
またカラム名がuser_nameである場合、モデルにsetUserName()メソッドが存在すれば、モデルに格納されます。
なお、カラム名はすべて小文字変換してから判定します。
上記の方法とは別にカラム名と異なったSetterメソッドでデータを格納したい場合は
GetterおよびSetterメソッドに対して、ColumnMapping
アノテーションを記述することで対応できます。
カラム名がuser_nameのデータに対してをsetName()メソッドを使うようにする場合は以下のように記述します。@ColumnMapping("user_name")
public void setName(String name) {
}
フェッチのパフォーマンスを向上させるために、このメソッド内でSQL文を加工して、SQLを発行します。 そのため、select文に対してTOP句が利用できません。 ただし、サブクエリに対してはSQL Serverの制約に準じます。 |
T
- 結果を格納するモデルのクラス名modelClass
- 結果を格納するモデルのクラス名sql
- SQL文parameters
- パラメータの配列start
- 検索開始行count
- 検索行数NotExistException
AccessSecurityException
IllegalArgumentException
NamingException
SQLException
InstantiationException
IllegalAccessException
InvocationTargetException
Copyright © 2012 NTT DATA INTRAMART CORPORATION