代码:
1.util包下
DButil类
package com.westos.spring.list.util;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class DButil {
private static ComboPooledDataSource ds = null;
static {
ds = new ComboPooledDataSource();
}
public static ComboPooledDataSource getDs(){
return ds;
}
}
2.list包下
ResultsetTodoList接口
public interface ResultSetTodoList {
List<Object> resultSettodolist(ResultSet rs,Class<?>clazz);
}
Student类
public class Student {
private String sname;
private Integer age;
public Student(String sname, Integer age) {
this.sname = sname;
this.age = age;
}
public Student() {
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"sname='" + sname + '\'' +
", age=" + age +
'}';
}
}
ResultSetTodoList类
public class ResultSetTodoListimp implements ResultSetTodoList{
//获取结果集中的数据
@Override
public List<Object> resultSettodolist(ResultSet rs, Class<?> clazz) {
//返回的结果对象
List<Object> list=new ArrayList<>();
//获取对象的属性值
Field[]fields=clazz.getDeclaredFields();
try {
while(rs.next()){
Object obj = clazz.newInstance();
for(int i=0;i<fields.length;i++){
String name = fields[i].getName();
System.out.println(name);
//set方法
String methodname="set"+ StringUtils.capitalize(name);
Method method=clazz.getDeclaredMethod(methodname,fields[i].getType());
if(StringUtils.equals(fields[i].getType().getName(),"java.lang.String")){
method.invoke(obj,rs.getString(fields[i].getName()));
}else if(StringUtils.equals(fields[i].getType().getName(),"java.lang.Integer")){
method.invoke(obj,rs.getInt(fields[i].getName()));
}
}
list.add(obj);
}
}catch (Exception e){
e.printStackTrace();
}finally {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return list;
}
public ResultSet getRs(ComboPooledDataSource ds)throws Exception{
PreparedStatement ps=null;
ResultSet rs=null;
Connection conn=null;
String sql="select * from student";
try{
conn=ds.getConnection();
ps=conn.prepareStatement(sql);
rs=ps.executeQuery();
}catch (Exception e){
e.printStackTrace();
}
return rs;
}
}
test类
public class Test {
public static void main(String[] args) throws Exception {
ComboPooledDataSource ds = DButil.getDs();
ResultSetTodoListimp rst = new ResultSetTodoListimp();
ResultSet rs = rst.getRs(ds);
List<Object> list = rst.resultSettodolist(rs,Student.class);
System.out.println(list);
ds.close();
}
}