在做项目时,有时候我们需要删除一组数据,但是所根据的属性和对应类,我们不能确定,我们可以使用以下方法来处理
import java.util.ArrayList;
import java.util.List;
import java.lang.reflect.Method;
import cn.okaysoft.bulletin.entity.BulletinContent;
public class ChangeToIds {
/**
* @author PBJ
* @param list
* @param column
* @return 将最终的一个id字符串返回
* @time:2014-8-19
*/
public static String getIds(List list,String column){
StringBuffer contextIds = new StringBuffer();
if (list.size() >= 2) {
contextIds.append("(");
for (int i = 0; i < list.size() - 1; i++) {
contextIds.append("\'"
+ getFieldValueByName(column,list.get(i)) + "\'"
+ ",");
}
contextIds.append("\'"
+ getFieldValueByName(column,list.get(list.size() - 1))
+ "\'"); // 拼装一个字符串是存放主键的,用逗号隔开
contextIds.append(")");
} else {
contextIds.append("");
contextIds.append("\'"
+getFieldValueByName(column,list.get(0)) + "\'");
contextIds.append(")");
}
String parmIds = contextIds.toString(); // 获取要删除附件中那个文件的主键
return parmIds;
}
/**
* @pbj
* @param fieldName 注意必须是字符串类型的,是一个属性对应的名称,如User类里面有name,则fileName="name"
* @param o
* @return
*/
private static Object getFieldValueByName(String fieldName, Object o) {
try {
String firstLetter = fieldName.substring(0,1).toUpperCase();
String getter = "get" + firstLetter + fieldName.substring(1); //得到一个get...属性相应的方法
Method method = o.getClass().getMethod(getter, new Class[] {});
Object value = method.invoke(o, new Object[] {});
return value;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}