クラス 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 実装。マッピングされたターゲットクラスは最上位クラスである必要があり、デフォルトまたは引数なしのコンストラクターが必要です。

列値は、結果セットのメタデータから取得した列名と、対応するプロパティのパブリック 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
関連事項:
  • フィールドの詳細

    • 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 値をマッピングする場合に、Java プリミティブをデフォルトにするかどうかを設定します。

      デフォルトは false で、null が Java プリミティブにマップされると例外をスローします。

    • isPrimitivesDefaultedForNullValue

      public boolean isPrimitivesDefaultedForNullValue()
      対応するデータベースフィールドから null 値をマッピングする場合に、Java プリミティブをデフォルトにするかどうかを返します。
    • 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
    • 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 オブジェクト値を取得します。

      デフォルトの実装は getColumnValue(ResultSet, int, Class) に委譲します。

      パラメーター:
      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
      関連事項: