将setObject隐藏,用反射获取model里面的数据
/**
* @Date 2016年7月19日
*
* @author Administrator
*/
package com.eshore.fileExport;
import java.lang.reflect.Field;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.beanutils.BeanUtils;
/**
* @author mercy
*
*/
public class Converter<T> {
public static <T> T convert2Bean(ResultSet rs, Class<T> bean) throws Exception {
Field[] fields = bean.getDeclaredFields();
T obj = bean.newInstance();
for (Field field : fields) {
String pname = field.getName();
BeanUtils.setProperty(obj, pname, rs.getObject(pname));
}
return obj != null ? obj : null;
}
public static <T> List<T> convert2BeanList(ResultSet rs, Class<T> bean) throws Exception {
Field[] fields = bean.getDeclaredFields();
List<T> lists = new ArrayList<T>();
String pName="";
String sqlName="";
while (rs.next()) {
T obj = bean.newInstance();
for (Field field : fields) {
String newName=getUnderlineString(field.getName());
if(newName.contains("_")){
String f1=newName.substring(0,newName.indexOf("_"));
String f2=newName.substring(newName.indexOf("_"),newName.indexOf("_")+1);
String f3=newName.substring(newName.indexOf("_")+1,newName.length());
System.out.println("f1:"+f1+",f2:"+f2+",f3:"+f3);
sqlName=f1+f2+f3;
}
pName = field.getName();
BeanUtils.setProperty(obj, pName, rs.getObject(sqlName));
}
lists.add(obj);
}
return lists != null ? lists : null;
}
public static char upperOrLower(char c){
if(c <= 90 && c >= 65){
c += 32;
} else if(c <= 122 && c >= 97){
c -= 32;
}
return c;
}
public static boolean isUpper(char c){
if(c <= 90 && c >= 65){
return true;
} else if(c <= 122 && c >= 97){
return false;
}
return false;
}
//由payType转为pay_type
public static String getUnderlineString(String str){
StringBuilder strs=new StringBuilder();
for(int i=0;i<str.length();i++){
if(isUpper(str.charAt(i))){
strs.append("_").append(upperOrLower(str.charAt(i)));
}else{
strs.append(str.charAt(i));
}
}
return strs.toString();
}
}
引用:
//获取前一天的所有计费数据
public List<BillData> queryBillList(int start,int size){
logger.info("query data...");
String sqlStr=sqlQuery+tableName;
List<BillData> billList=new ArrayList<BillData>();
ResultSet rs=null;
if(start!=0||size!=0){
sqlStr=sqlStr+" limit ?,?";
rs=util.Query(sqlStr,start,size);
}else{
rs=util.Query(sqlStr,null);
}
try {
return rs != null ? Converter.convert2BeanList(rs, BillData.class) : null;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
//logger.info("sql:{}",sqlStr);
/*try {
while(rs.next()){
BillData bill=new BillData();
int i=1;
bill.setBusinessNumber(String.valueOf(rs.getObject(i++)));
bill.setPayType(Integer.parseInt(String.valueOf(rs.getObject(i++))));
bill.setAreaCode(String.valueOf(rs.getObject(i++)));
bill.setCreateTime(Timestamp.valueOf(String.valueOf(rs.getObject(i++))));
bill.setProductId(String.valueOf(rs.getObject(i++)));
bill.setProductSpecCode(String.valueOf(rs.getObject(i++)));
bill.setProductName(String.valueOf(rs.getObject(i++)));
bill.setPrice(Integer.parseInt(String.valueOf(rs.getObject(i++))));
bill.setBookType(Integer.parseInt(String.valueOf(rs.getObject(i++))));
bill.setAccType(String.valueOf(rs.getObject(i++)));
bill.setDeleCode(String.valueOf(rs.getObject(i++)));
billList.add(bill);
}
} catch (SQLException e) {
e.printStackTrace();
}
return billList;*/
}
原文:https://www.cnblogs.com/JAYIT/p/9318839.html