クラス BeanPropertyRowMapper<T>

java.lang.ObjectSE
org.springframework.jdbc.core.BeanPropertyRowMapper<T>
型パラメーター:
T - 結果の型
実装されたすべてのインターフェース:
RowMapper<T>
既知の直属サブクラス
DataClassRowMapper

public class BeanPropertyRowMapper<T> extends ObjectSE implements RowMapper<T>
行を、指定されたマップ済みターゲットクラスの新しいインスタンスに変換する 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
関連事項:
  • フィールドの詳細

    • logger

      protected final Log logger
      サブクラスで利用可能なロガー。
  • コンストラクターの詳細

    • BeanPropertyRowMapper

      public BeanPropertyRowMapper()
      Bean スタイルの構成用に新しい BeanPropertyRowMapper を作成します。
      関連事項:
    • BeanPropertyRowMapper

      public BeanPropertyRowMapper(ClassSE<T> mappedClass)
      新しい BeanPropertyRowMapper を作成し、ターゲット Bean の未入力プロパティを受け入れます。
      パラメーター:
      mappedClass - 各行がマップされるクラス
    • BeanPropertyRowMapper

      public BeanPropertyRowMapper(ClassSE<T> mappedClass, boolean checkFullyPopulated)
      新しい BeanPropertyRowMapper を作成します。
      パラメーター:
      mappedClass - 各行がマップされるクラス
      checkFullyPopulated - すべての Bean プロパティが対応するデータベース列からマップされていることを厳密に検証しているかどうか
  • メソッドの詳細

    • setMappedClass

      public void setMappedClass(ClassSE<T> mappedClass)
      各行をマップするクラスを設定します。
    • getMappedClass

      @Nullable public final ClassSE<T> 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

      public void setConversionService(@Nullable ConversionService conversionService)
      JDBC 値を Bean プロパティにバインドするには ConversionService を設定し、なしの場合は null を設定します。

      デフォルトは、Spring 4.3 以降の DefaultConversionService です。これにより、java.time 変換およびその他の特殊な型がサポートされます。

      導入:
      4.3
      関連事項:
    • getConversionService

      @Nullable public ConversionService getConversionService()
      JDBC 値を Bean プロパティにバインドするために ConversionService を返し、ない場合は null を返します。
      導入:
      4.3
    • initialize

      protected void initialize(ClassSE<T> mappedClass)
      指定されたクラスのマッピングメタデータを初期化します。
      パラメーター:
      mappedClass - マッピングされたクラス
      関連事項:
    • suppressProperty

      protected void suppressProperty(StringSE propertyName)
      指定されたプロパティをマップされたプロパティから削除します。
      パラメーター:
      propertyName - プロパティ名 (プロパティ記述子で使用される)
      導入:
      5.3.9
    • mappedNames

      protected SetSE<StringSE> mappedNames(PropertyDescriptorSE pd)
      指定されたプロパティのマップされた名前を決定します。

      サブクラスは、このメソッドをオーバーライドして、マップされた名前をカスタマイズしたり、この基本メソッド (小文字およびアンダースコアベースの形式でプロパティ名を返す) によって決定されたセットに追加または削除したり、セットを完全に置き換えたりすることができます。

      パラメーター:
      pd - 初期化時に検出されたプロパティ記述子
      戻り値:
      マップされた名前のセット
      導入:
      6.1.4
      関連事項:
    • lowerCaseName

      protected StringSE lowerCaseName(StringSE name)
      指定された名前を小文字に変換します。

      デフォルトでは、変換は米国ロケール内で行われます。

      パラメーター:
      name - 元の名前
      戻り値:
      変換された名前
      導入:
      4.2
      関連事項:
    • underscoreName

      protected StringSE underscoreName(StringSE name)
      camelCase の名前を小文字のアンダースコア付きの名前に変換します。

      大文字は、前にアンダースコアを付けて小文字に変換されます。

      パラメーター:
      name - 元の名前
      戻り値:
      変換された名前
      導入:
      4.2
      関連事項:
    • mapRow

      public T mapRow(ResultSetSE rs, int rowNumber) throws SQLExceptionSE
      現在の行のすべての列の値を抽出します。

      パブリック setter と結果セットのメタデータを利用します。

      次で指定:
      インターフェース RowMapper<T>mapRow 
      パラメーター:
      rs - マップする ResultSet (現在の行に対して事前に初期化済み)
      rowNumber - 現在の行の番号
      戻り値:
      現在の行の結果オブジェクト (null の場合があります)
      例外:
      SQLExceptionSE - 列値の取得中に SQLException が発生した場合 (つまり、SQLException をキャッチする必要はありません。)
      関連事項:
    • constructMappedInstance

      protected T constructMappedInstance(ResultSetSE rs, TypeConverter tc) throws SQLExceptionSE
      現在の行のマップされたクラスのインスタンスを作成します。
      パラメーター:
      rs - ResultSet をマップする (現在の行に対して事前に初期化済み)
      tc - この RowMapper の変換サービスを備えた TypeConverter
      戻り値:
      マップされたクラスの対応するインスタンス
      例外:
      SQLExceptionSE - SQLException が発生した場合
      導入:
      5.3
    • initBeanWrapper

      protected void initBeanWrapper(BeanWrapper bw)
      行マッピングに使用される特定の BeanWrapper を初期化します。

      行ごとに呼び出されます。

      デフォルトの実装では、構成された ConversionService があれば適用されます。サブクラスでオーバーライドできます。

      パラメーター:
      bw - 初期化する BeanWrapper
      関連事項:
    • getColumnValue

      @Nullable protected ObjectSE getColumnValue(ResultSetSE rs, int index, PropertyDescriptorSE pd) throws SQLExceptionSE
      指定された列の JDBC オブジェクト値を取得します。

      デフォルトの実装では、指定された PropertyDescriptorSE の型を使用して JdbcUtils.getResultSetValue(java.sql.ResultSet, int, Class) を呼び出します。

      サブクラスはこれをオーバーライドして、特定の値の型を事前にチェックしたり、getResultSetValue から返された値を後処理したりできます。

      パラメーター:
      rs - データを保持している ResultSet
      index - 列インデックスです
      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 - データを保持している ResultSet
      index - 列インデックスです
      paramType - ターゲットパラメーター型
      戻り値:
      オブジェクト値
      例外:
      SQLExceptionSE - 抽出に失敗した場合
      導入:
      5.3
      関連事項:
    • newInstance

      public static <T> BeanPropertyRowMapper<T> newInstance(ClassSE<T> mappedClass)
      新しい 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
      関連事項: