クラス BeanPropertyRowMapper<T>
- 型パラメーター:
T
- 結果の型
- 実装されたすべてのインターフェース:
RowMapper<T>
- 既知の直属サブクラス
DataClassRowMapper
RowMapper
実装。マッピングされたターゲットクラスは最上位クラスである必要があり、デフォルトまたは引数なしのコンストラクターが必要です。列値は、結果セットのメタデータから取得した列名と、対応するプロパティのパブリック setter との一致に基づいてマッピングされます。名前は、直接一致するか、「キャメル」の大文字小文字を使用して、アンダースコアで部分を区切る名前を同じ名前に変換することによって一致します。
多くの一般的な型のターゲットクラスのフィールドにマッピングが提供されます。たとえば、String、boolean、Boolean、byte、Byte、short、Short、int、Integer、long、Long、float、Float、double、Double、BigDecimal、java.util.Date
、等
一致する名前のない列とフィールド間のマッピングを容易にするには、"select fname as first_name as customer" などの SQL ステートメントで列エイリアスを使用してみてください。
データベースから読み取られた 'null' 値については、setter を呼び出そうとしますが、Java プリミティブの場合は、TypeMismatchException が発生します。このクラスは、この例外をトラップし、プリミティブのデフォルト値を使用するように (primitivesDefaultedForNullValue プロパティを使用して) 構成できます。生成された Bean の値を使用してデータベースを更新する場合、プリミティブ値は null ではなくプリミティブのデフォルト値に設定されることに注意してください。
このクラスは、高性能ではなく利便性を提供するように設計されていることに注意してください。最高のパフォーマンスを得るには、カスタム RowMapper
実装の使用を検討してください。
- 導入:
- 2.5
- 作成者:
- Thomas Risberg, Juergen Hoeller
- 関連事項:
フィールドサマリー
コンストラクターのサマリー
コンストラクター説明Bean スタイルの構成用に新しいBeanPropertyRowMapper
を作成します。BeanPropertyRowMapper
(ClassSE<T> mappedClass) 新しいBeanPropertyRowMapper
を作成し、ターゲット Bean の未入力プロパティを受け入れます。BeanPropertyRowMapper
(ClassSE<T> mappedClass, boolean checkFullyPopulated) 新しいBeanPropertyRowMapper
を作成します。メソッドのサマリー
修飾子と型メソッド説明protected T
現在の行のマップされたクラスのインスタンスを作成します。protected ObjectSE
getColumnValue
(ResultSetSE rs, int index, PropertyDescriptorSE pd) 指定された列の JDBC オブジェクト値を取得します。protected ObjectSE
getColumnValue
(ResultSetSE rs, int index, ClassSE<?> paramType) 指定された列の JDBC オブジェクト値を取得します。JDBC 値を Bean プロパティにバインドするためにConversionService
を返し、ない場合はnull
を返します。マッピングするクラスを取得します。protected void
行マッピングに使用される特定の BeanWrapper を初期化します。protected void
initialize
(ClassSE<T> mappedClass) 指定されたクラスのマッピングメタデータを初期化します。boolean
すべての Bean プロパティが対応するデータベースフィールドからマップされていることを厳密に検証しているかどうかを返します。boolean
対応するデータベースフィールドから null 値をマッピングする場合に、Java プリミティブをデフォルトにするかどうかを返します。protected StringSE
lowerCaseName
(StringSE name) 指定された名前を小文字に変換します。mapRow
(ResultSetSE rs, int rowNumber) 現在の行のすべての列の値を抽出します。static <T> BeanPropertyRowMapper<T>
newInstance
(ClassSE<T> mappedClass) 新しいBeanPropertyRowMapper
を作成する静的ファクトリメソッド。static <T> BeanPropertyRowMapper<T>
newInstance
(ClassSE<T> mappedClass, ConversionService conversionService) 新しいBeanPropertyRowMapper
を作成する静的ファクトリメソッド。void
setCheckFullyPopulated
(boolean checkFullyPopulated) すべての Bean プロパティが対応するデータベースフィールドからマップされていることを厳密に検証するかどうかを設定します。void
setConversionService
(ConversionService conversionService) JDBC 値を Bean プロパティにバインドするにはConversionService
を設定し、なしの場合はnull
を設定します。void
setMappedClass
(ClassSE<T> mappedClass) 各行をマップするクラスを設定します。void
setPrimitivesDefaultedForNullValue
(boolean primitivesDefaultedForNullValue) 対応するデータベースフィールドから null 値をマッピングする場合に、Java プリミティブをデフォルトにするかどうかを設定します。protected void
suppressProperty
(StringSE propertyName) マップされたフィールドから指定されたプロパティを削除します。protected StringSE
underscoreName
(StringSE name) camelCase の名前を小文字の下線付きの名前に変換します。
フィールドの詳細
logger
サブクラスで利用可能なロガー。
コンストラクターの詳細
BeanPropertyRowMapper
public BeanPropertyRowMapper()Bean スタイルの構成用に新しいBeanPropertyRowMapper
を作成します。BeanPropertyRowMapper
新しいBeanPropertyRowMapper
を作成し、ターゲット Bean の未入力プロパティを受け入れます。- パラメーター:
mappedClass
- 各行がマップされるクラス
BeanPropertyRowMapper
新しいBeanPropertyRowMapper
を作成します。- パラメーター:
mappedClass
- 各行がマップされるクラスcheckFullyPopulated
- すべての Bean プロパティが対応するデータベースフィールドからマップされていることを厳密に検証しているかどうか
メソッドの詳細
setMappedClass
各行をマップするクラスを設定します。getMappedClass
マッピングするクラスを取得します。setCheckFullyPopulated
public void setCheckFullyPopulated(boolean checkFullyPopulated) すべての Bean プロパティが対応するデータベースフィールドからマップされていることを厳密に検証するかどうかを設定します。デフォルトは
false
で、ターゲット Bean の未入力プロパティを受け入れます。isCheckFullyPopulated
public boolean isCheckFullyPopulated()すべての Bean プロパティが対応するデータベースフィールドからマップされていることを厳密に検証しているかどうかを返します。setPrimitivesDefaultedForNullValue
public void setPrimitivesDefaultedForNullValue(boolean primitivesDefaultedForNullValue) 対応するデータベースフィールドから null 値をマッピングする場合に、Java プリミティブをデフォルトにするかどうかを設定します。デフォルトは
false
で、null が Java プリミティブにマップされると例外をスローします。isPrimitivesDefaultedForNullValue
public boolean isPrimitivesDefaultedForNullValue()対応するデータベースフィールドから null 値をマッピングする場合に、Java プリミティブをデフォルトにするかどうかを返します。setConversionService
JDBC 値を Bean プロパティにバインドするにはConversionService
を設定し、なしの場合はnull
を設定します。デフォルトは、Spring 4.3 以降の
DefaultConversionService
です。これにより、java.time
変換およびその他の特殊な型がサポートされます。- 導入:
- 4.3
- 関連事項:
getConversionService
JDBC 値を Bean プロパティにバインドするためにConversionService
を返し、ない場合はnull
を返します。- 導入:
- 4.3
initialize
指定されたクラスのマッピングメタデータを初期化します。- パラメーター:
mappedClass
- マッピングされたクラス
suppressProperty
マップされたフィールドから指定されたプロパティを削除します。- パラメーター:
propertyName
- プロパティ名 (プロパティ記述子で使用される)- 導入:
- 5.3.9
lowerCaseName
指定された名前を小文字に変換します。デフォルトでは、変換は米国ロケール内で行われます。- パラメーター:
name
- 元の名前- 戻り値:
- 変換された名前
- 導入:
- 4.2
underscoreName
camelCase の名前を小文字のアンダースコア付きの名前に変換します。大文字は先頭にアンダースコアを付けて小文字に変換されます。- パラメーター:
name
- 元の名前- 戻り値:
- 変換された名前
- 導入:
- 4.2
- 関連事項:
mapRow
現在の行のすべての列の値を抽出します。パブリック setter と結果セットのメタデータを利用します。
- 次で指定:
- インターフェース
RowMapper<T>
のmapRow
- パラメーター:
rs
- ResultSet をマップする (現在の行に対して事前に初期化済み)rowNumber
- 現在の行の番号- 戻り値:
- 現在の行の結果オブジェクト (
null
の場合があります) - 例外:
SQLExceptionSE
- 列値の取得中に SQLException が発生した場合 (つまり、SQLException をキャッチする必要はありません。)- 関連事項:
constructMappedInstance
現在の行のマップされたクラスのインスタンスを作成します。- パラメーター:
rs
- ResultSet をマップする (現在の行に対して事前に初期化済み)tc
- この RowMapper の変換サービスを備えた TypeConverter- 戻り値:
- マップされたクラスの対応するインスタンス
- 例外:
SQLExceptionSE
- SQLException が発生した場合- 導入:
- 5.3
initBeanWrapper
行マッピングに使用される特定の BeanWrapper を初期化します。行ごとに呼び出されます。デフォルトの実装では、構成された
ConversionService
があれば適用されます。サブクラスでオーバーライドできます。- パラメーター:
bw
- 初期化する BeanWrapper- 関連事項:
getColumnValue
@Nullable protected ObjectSE getColumnValue(ResultSetSE rs, int index, PropertyDescriptorSE pd) throws SQLExceptionSE 指定された列の JDBC オブジェクト値を取得します。デフォルトの実装は
getColumnValue(ResultSet, int, Class)
に委譲します。- パラメーター:
rs
- データを保持している ResultSetindex
- 列インデックスですpd
- 各結果オブジェクトが一致すると予想される Bean プロパティ- 戻り値:
- オブジェクト値
- 例外:
SQLExceptionSE
- 抽出に失敗した場合- 関連事項:
getColumnValue
@Nullable protected ObjectSE getColumnValue(ResultSetSE rs, int index, ClassSE<?> paramType) throws SQLExceptionSE 指定された列の JDBC オブジェクト値を取得します。デフォルトの実装は
JdbcUtils.getResultSetValue(java.sql.ResultSet, int, Class)
を呼び出します。サブクラスはこれをオーバーライドして、特定の値型を事前に確認したり、getResultSetValue
から返される値を後処理したりできます。- パラメーター:
rs
- データを保持している ResultSetindex
- 列インデックスですparamType
- ターゲットパラメーター型- 戻り値:
- オブジェクト値
- 例外:
SQLExceptionSE
- 抽出に失敗した場合- 導入:
- 5.3
- 関連事項:
newInstance
新しいBeanPropertyRowMapper
を作成する静的ファクトリメソッド。- パラメーター:
mappedClass
- 各行がマップされるクラス- 関連事項:
newInstance
public static <T> BeanPropertyRowMapper<T> newInstance(ClassSE<T> mappedClass, @Nullable ConversionService conversionService) 新しいBeanPropertyRowMapper
を作成する静的ファクトリメソッド。- パラメーター:
mappedClass
- 各行がマップされるクラスconversionService
- JDBC 値を Bean プロパティにバインドする場合はConversionService
、ない場合はnull
- 導入:
- 5.2.3
- 関連事項: