Beansクラスは、Commons BeanUtilsの
流れるようなインターフェース版です。
流れるようなインターフェースについては、
こちらをご覧ください
Beansクラスを使うには、S2-Tigerが必要です。
セットアップについては、こちらをご覧ください。
JavaBeansとJavaBeans、MapとJavaBeans、MapとMap間でプロパティをコピーするためには、
copy(Object src, Object dest) とexecute() を組み合わせます。
最初の引数がコピー元、二番目の引数がコピー先です。
SrcBean src = new SrcBean();
DestBean dest = new DestBean();
...
Beans.copy(src, dest).execute();
JavaBeansやMapを生成し、プロパティをコピーするためには、
createAndCopy(Class<T> destClass, Object src) とexecute() を組み合わせます。
最初の引数が生成するクラス、二番目の引数がコピー元です。
SrcBean src = new SrcBean();
...
DestBean dest = Beans.createAndCopy(DestBean.class, src).execute();
特定のプロパティだけを対象にするには、
includes(String... propertyNames) を使います。
SrcBean src = new SrcBean();
DestBean dest = new DestBean();
...
Beans.copy(src, dest).includes("foo", "bar").execute();
特定のプロパティだけを対象外にするには、
excludes(String... propertyNames) を使います。
includes()と同時に指定することはできません。
SrcBean src = new SrcBean();
DestBean dest = new DestBean();
...
Beans.copy(src, dest).excludes("foo", "bar").execute();
特定のプレフィックスのついたプロパティだけを対象にするには、
prefix(String prefix) を使います。
コピー先のプロパティ名からプレフィックスは取り除かれます。
public where_aaa;
...
BeanMap map = Beans.createAndCopy(BeanMap.class, this).prefix("where_").execute();
System.out.println(map.get("aaa"));
department$nameのような'$'をデリミタにしたプロパティ名を持つJavaBeansをMapにコピーすると、
department.nameのような'.'をデリミタにしたプロパティ名に変換されます。
これは、S2JDBCのwhere()
で使うために用意されている機能です。
'$'と'.'は、それぞれbeanDelimiter(char beanDelimiter) と
mapDelimiter(char mapDelimiter) を使って変更することができます。
BeanMapは、HashMap<String, Object>なクラスで、
存在しないプロパティにアクセスすると例外を投げるようになっています。
|