如果是entity里面再套层entity的话,就参照下面写个循环就可以了。另外我只是写了个例子,如果值多的话最好用 Class.forName
这个方法,嗯,代码如下:
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package jp.co.nd.business.artlog;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import jp.co.nd.lang.RString
/**
* APログ出力のための業務公開クラスです。<br>
* 基本的には、アプリケーションに必要なログは自動的に出力されます。<br>
* <br>
* 例えば、次のような場合は明示的にこのAPIを呼び出す必要はありません。<br>
* <pre>
* ・例外に関するログは自動出力します。例外catch時にこのAPIを呼び出す必要はありません。
* ・メソッドの呼び出し履歴。R.NETでは全メソッドをtry-catchで囲んでログ出力をしていましたが、必要ありません。
* </pre><br>
* このAPIを利用するのは、標準で出力されるログとは別に、明示的にログを確実に取得したい場合に呼び出してください。
*
* @author n3565
*/
public final class EntityRLogger {
private static final RString 開始 = new RString("--------------開始");
private static final RString 終了 = new RString("--------------終了");
private EntityRLogger() {
}
/**
* APログ出力のための業務公開クラスです。
*
* @param entityName 名
* @param entitys リストオブジェクト
*/
public static void printList(RString entityName, List<Object> entitys) {
for (Object entity : entitys) {
print(entityName, entity);
}
}
/**
* APログ出力のための業務公開クラスです。
*
* @param objectMap オブジェクトマップ
*/
public static void printMapList(Map<RString, List<Object>> objectMap) {
for (Map.Entry<RString, List<Object>> entry : objectMap.entrySet()) {
for (Object entity : entry.getValue()) {
print(entry.getKey(), entity);
}
}
}
/**
* APログ出力のための業務公開クラスです。
*
* @param entityName 名
* @param entity オブジェクト
*/
public static void print(RString entityName, Object entity) {
RLogger.info(entityName.concat(開始));
List<Field> fields = Arrays.asList(entity.getClass().getDeclaredFields());
for (Field field : fields) {
entity.getClass().getFields();
try {
String name = field.getName();
name = name.substring(0, 1).toUpperCase() + name.substring(1);
String type = field.getGenericType().toString();
if (type.equals("long")) {
Method m = entity.getClass().getDeclaredMethod("get" + name);
Long value = (long) m.invoke(entity);
if (null != value) {
RLogger.info(new RString(name).concat(new RString(":")).concat(String.valueOf(value)));
}
}
if (type.equals("int")) {
Method m = entity.getClass().getDeclaredMethod("get" + name);
Integer value = (int) m.invoke(entity);
if (null != value) {
RLogger.info(new RString(name).concat(new RString(":")).concat(String.valueOf(value)));
}
}
if (type.equals("int")) {
Method m = entity.getClass().getDeclaredMethod("get" + name);
Boolean value = (boolean) m.invoke(entity);
if (null != value) {
RLogger.info(new RString(name).concat(new RString(":")).concat(
value ? new RString("TRUE") : new RString("FALSE")
));
}
}
if (type.equals("class jp.co.nd.lang.RString")) {
Method m = entity.getClass().getDeclaredMethod("get" + name);
RString value = (RString) m.invoke(entity);
if (null != value) {
RLogger.info(new RString(name).concat(new RString(":")).concat(value));
}
}
} catch (Exception e) {
e.getMessage();
}
}
RLogger.info(entityName.concat(終了));
}
/**
* ToObjectの業務公開クラスです。
*
* @param <E> オブジェクト
* @param list リスト
* @return リストオブジェクト
*/
public static <E> List<Object> toObject(List<E> list) {
List<Object> objlist = new ArrayList<>();
for (Object e : list) {
Object obj = (Object) e;
objlist.add(obj);
}
return objlist;
}
}
调用方法
private void printTemporaryLog(List<OshiraseTempTableEntity> 一時TBLリスト) {
EntityRLogger.printList(new RString("一時TBLリスト"), EntityRLogger.toObject(一時TBLリスト));
}