package cn.lnu.utils;
import java.lang.reflect.Field;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
//�������߰������������ȼ���ʵ�ʿ����о���ʹ�õĴ����������ڿ������߲�֪�������������ʲô�����������������ʵ�ֽӿڵ�ʱ��һ�����캯�������û���Ҫ�����������ʲô�����������
public class BeanHandler implements ResultSetHandler{//Ԥ��ʵ��һ�������������һ��bean�����е���
private Class clazz;
public BeanHandler(Class clazz){
this.clazz=clazz;//�����û����ݹ������࣬�����ס����������������߸�������࣬���������װ���������Ķ����з���
}
public Object handler(ResultSet rs) {
try {
if(!rs.next()){//����������û�����ݣ����账��ֱ�ӷ���null
return null;
}
//�����ݣ�������װ�������bean
Object bean=clazz.newInstance();
//���ڿ������߲�֪��������ж���ʲô���ݣ������Ҫ�õ������Ԫ������,
ResultSetMetaData meta=rs.getMetaData();//�õ��������Ԫ���ݣ��Ի�ý��������Ϣ
int count=meta.getColumnCount();//��ý�������ܵ�����
for(int i=0;i<count;i++){
String name=meta.getColumnName(i+1);//��ý����ÿ�е���������������±��1��ʼ��
Object value=rs.getObject(name);//���ÿ��������Ӧ��ֵ
//ͨ��ÿ��ȡ�õĽ�������������bean�����������Ӧ������
Field f=bean.getClass().getDeclaredField(name);
f.setAccessible(true);//����bean�����������ʱ������һ��Ϊ˽�У�����ǿ����Ϊ����ʹ�������Բ�������������
f.set(bean, value);//���������������Ϊf��ֵ���浽bean�����Ӧ������
}
return bean;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}