クラス BeanPropertyRowMapper<T>
- 型パラメーター:
T
- 結果の型
- 実装されたすべてのインターフェース:
RowMapper<T>
- 既知の直属サブクラス
DataClassRowMapper
RowMapper
実装。マップされたターゲットクラスは、最上位クラスまたは static
ネストされたクラスである必要があり、デフォルトまたは引数なしのコンストラクターを持っている必要があります。列の値は、(結果セットのメタデータから取得した) 列名と、対応するプロパティのターゲットクラスのパブリック 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 from customer"
のような SQL ステートメントで列エイリアスを使用してみてください。ここで、first_name
はターゲットクラスの setFirstName(String)
メソッドにマップできます。
データベースから読み込まれた NULL
値の場合、対応する setter メソッドを null
で呼び出そうとしますが、Java プリミティブの場合、デフォルトで TypeMismatchException
になります。ターゲットクラスのすべてのプリミティブプロパティの NULL
データベース値を無視するには、primitivesDefaultedForNullValue
フラグを true
に設定します。詳細については、setPrimitivesDefaultedForNullValue(boolean)
を参照してください。
データクラスコンストラクターを持つターゲットクラス (Java record
や Kotlin data
クラスなど) にマップする必要がある場合は、代わりに DataClassRowMapper
を使用します。
このクラスは、高性能ではなく利便性を提供するように設計されていることに注意してください。最高のパフォーマンスを得るには、カスタム RowMapper
実装の使用を検討してください。
- 導入:
- 2.5
- 作成者:
- Thomas Risberg, Juergen Hoeller, Sam Brannen
- 関連事項:
フィールドサマリー
コンストラクターのサマリー
コンストラクター説明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
primitivesDefaultedForNullValue
フラグの値を取得します。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
データベース列の値を無視するかどうかを設定します。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
データベース列の値を無視するかどうかを設定します。デフォルトは
false
で、null が Java プリミティブにマップされると例外をスローします。このフラグが
true
に設定されていて、マップされた Bean から ignored プリミティブプロパティ値を使用してデータベースを更新すると、データベース内の値はNULL
からそのプリミティブプロパティの現在の値に変更されます。この値は、プロパティの初期値 (それぞれのプリミティブ型に対する Java の既定値の可能性があります) である場合もあれば、既定のコンストラクター (または初期化ブロック) でプロパティに設定された他の値である場合、マップされた Bean 内の他のプロパティを設定することによる副作用である場合もあります。isPrimitivesDefaultedForNullValue
public boolean isPrimitivesDefaultedForNullValue()primitivesDefaultedForNullValue
フラグの値を取得します。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
- 関連事項: