T
- 結果の型 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
実装の使用を検討してください。
DataClassRowMapper
コンストラクターと説明 |
---|
BeanPropertyRowMapper() Bean スタイルの構成用に新しい BeanPropertyRowMapper を作成します。 |
BeanPropertyRowMapper(ClassSE<T> mappedClass) 新しい BeanPropertyRowMapper を作成し、ターゲット Bean の未入力プロパティを受け入れます。 |
BeanPropertyRowMapper(ClassSE<T> mappedClass, boolean checkFullyPopulated) 新しい BeanPropertyRowMapper を作成します。 |
修飾子と型 | メソッドと説明 |
---|---|
protected T | constructMappedInstance(ResultSetSE rs, TypeConverter tc) 現在の行のマップされたクラスのインスタンスを作成します。 |
protected ObjectSE | getColumnValue(ResultSetSE rs, int index, ClassSE<?> paramType) 指定された列の JDBC オブジェクト値を取得します。 |
protected ObjectSE | getColumnValue(ResultSetSE rs, int index, PropertyDescriptorSE pd) 指定された列の JDBC オブジェクト値を取得します。 |
ConversionService | getConversionService() JDBC 値を Bean プロパティにバインドするために ConversionService を返し、ない場合は null を返します。 |
ClassSE<T> | getMappedClass() マッピングするクラスを取得します。 |
protected void | initBeanWrapper(BeanWrapper bw) 行マッピングに使用される特定の BeanWrapper を初期化します。 |
protected void | initialize(ClassSE<T> mappedClass) 指定されたクラスのマッピングメタデータを初期化します。 |
boolean | isCheckFullyPopulated() すべての Bean プロパティが対応するデータベースフィールドからマップされていることを厳密に検証しているかどうかを返します。 |
boolean | isPrimitivesDefaultedForNullValue() 対応するデータベースフィールドから null 値をマッピングする場合に、Java プリミティブをデフォルトにするかどうかを返します。 |
protected StringSE | lowerCaseName(StringSE name) 指定された名前を小文字に変換します。 |
T | 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 の名前を小文字のアンダースコア付きの名前に変換します。 |
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
protected final Log logger
public BeanPropertyRowMapper()
BeanPropertyRowMapper
を作成します。public BeanPropertyRowMapper(ClassSE<T> mappedClass)
BeanPropertyRowMapper
を作成し、ターゲット Bean の未入力プロパティを受け入れます。mappedClass
- 各行がマップされるクラス public void setCheckFullyPopulated(boolean checkFullyPopulated)
デフォルトは false
で、ターゲット Bean の未入力プロパティを受け入れます。
public boolean isCheckFullyPopulated()
public void setPrimitivesDefaultedForNullValue(boolean primitivesDefaultedForNullValue)
デフォルトは false
で、null が Java プリミティブにマップされると例外をスローします。
public boolean isPrimitivesDefaultedForNullValue()
public void setConversionService(@Nullable ConversionService conversionService)
ConversionService
を設定し、なしの場合は null
を設定します。 デフォルトは、Spring 4.3 以降の DefaultConversionService
です。これにより、java.time
変換およびその他の特殊な型がサポートされます。
initBeanWrapper(BeanWrapper)
@Nullable public ConversionService getConversionService()
ConversionService
を返し、ない場合は null
を返します。protected void initialize(ClassSE<T> mappedClass)
mappedClass
- マッピングされたクラス protected void suppressProperty(StringSE propertyName)
propertyName
- プロパティ名 (プロパティ記述子で使用される)protected StringSE lowerCaseName(StringSE name)
name
- 元の名前 protected StringSE underscoreName(StringSE name)
name
- 元の名前 lowerCaseName(java.lang.String)
public T mapRow(ResultSetSE rs, int rowNumber) throws SQLExceptionSE
パブリック setter と結果セットのメタデータを利用します。
RowMapper<T>
の mapRow
rs
- ResultSet をマップする (現在の行に対して事前に初期化済み)rowNumber
- 現在の行の番号 null
の場合があります)SQLExceptionSE
- 列値の取得中に SQLException が発生した場合 (つまり、SQLException をキャッチする必要はありません。)ResultSetMetaData
SEprotected T constructMappedInstance(ResultSetSE rs, TypeConverter tc) throws SQLExceptionSE
rs
- ResultSet をマップする (現在の行に対して事前に初期化済み)tc
- この RowMapper の変換サービスを備えた TypeConverterSQLExceptionSE
- SQLException が発生した場合 protected void initBeanWrapper(BeanWrapper bw)
デフォルトの実装では、構成された ConversionService
があれば適用されます。サブクラスでオーバーライドできます。
bw
- 初期化する BeanWrappergetConversionService()
, ConfigurablePropertyAccessor.setConversionService(org.springframework.core.convert.ConversionService)
@Nullable protected ObjectSE getColumnValue(ResultSetSE rs, int index, PropertyDescriptorSE pd) throws SQLExceptionSE
デフォルトの実装は getColumnValue(ResultSet, int, Class)
に委譲します。
rs
- データを保持している ResultSetindex
- 列インデックスです pd
- 各結果オブジェクトが一致すると予想される Bean プロパティ SQLExceptionSE
- 抽出に失敗した場合 getColumnValue(ResultSet, int, Class)
@Nullable protected ObjectSE getColumnValue(ResultSetSE rs, int index, ClassSE<?> paramType) throws SQLExceptionSE
デフォルトの実装は JdbcUtils.getResultSetValue(java.sql.ResultSet, int, Class)
を呼び出します。サブクラスはこれをオーバーライドして、特定の値型を事前に確認したり、getResultSetValue
から返される値を後処理したりできます。
rs
- データを保持している ResultSetindex
- 列インデックスです paramType
- ターゲットパラメーター型 SQLExceptionSE
- 抽出に失敗した場合 JdbcUtils.getResultSetValue(java.sql.ResultSet, int, Class)
public static <T> BeanPropertyRowMapper<T> newInstance(ClassSE<T> mappedClass)
BeanPropertyRowMapper
を作成する静的ファクトリメソッド。mappedClass
- 各行がマップされるクラス newInstance(Class, ConversionService)
public static <T> BeanPropertyRowMapper<T> newInstance(ClassSE<T> mappedClass, @Nullable ConversionService conversionService)
BeanPropertyRowMapper
を作成する静的ファクトリメソッド。mappedClass
- 各行がマップされるクラス conversionService
- JDBC 値を Bean プロパティにバインドする場合は ConversionService
、ない場合は null
newInstance(Class)
, setConversionService(org.springframework.core.convert.ConversionService)