(反射+内省机制的运用)处理jdbc的结果集
1、原理:反射+内省
2、反射:动态创建对象
3、内省:动态处理对象的属性值
4、结果集处理:
(1)把结果集中的一行数据,封装成一个对象,专门针对结果集中只有一行数据的情况。
(2)处理结果集--多行数据,封装成多个对象(list)
?专门针对结果集中只有一行数据的情况(把结果集中的一行数据,封装成一个对象) BeanHandler
public class BeanHandler implements IResultHandler2 {
private Class classType;
//因为需要把结果集的一行封装成一个对象【? 则需要有对象的存在】,通过反射技术,动态编译是才传入具体类型的对象
public BeanHandler(Class classType) { //通过构造器,传入具体的类型的,以便后边通过反射获取到对应类型的具体对象
this.classType = classType;
} @Override
public T handle(ResultSet rs) throws Exception {
//1、创建对应的类的一个对象
T obj = classType.newInstance();
//2、取出结果集中当前光标所在行的某一列的数据
BeanInfo beanInfo = Introspector.getBeanInfo(classType, Object.class);
PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors();
if(rs.next()) {
for(PropertyDescriptor pd : pds) {
//获取对象的属性名【属性名和列名相同】
String columnName = pd.getName();
Object val = rs.getObject(columnName);
//3、调用该对象的setter方法,把某一列的数据设置进去
pd.getWriteMethod().invoke(obj, val);
}
}
return obj;
}
}
【(反射+内省机制的运用)处理jdbc的结果集】?针对结果集中多行数据的情况(把结果集中的每一行数据,封装成一个对象) BeanHandler
public class BeanListHandler implements IResultHandler2> {
//利用反射技术,先拥有类
private Class classType;
public BeanListHandler(Class classType) {
this.classType = classType;
}
@Override
public List handle(ResultSet rs) throws Exception {
List list = new ArrayList<>();
while(rs.next()) {
T obj = classType.newInstance();
BeanInfo benInfo = Introspector.getBeanInfo(classType, Object.class);
PropertyDescriptor[] pds = benInfo.getPropertyDescriptors();
for(PropertyDescriptor pd : pds) {
String columnName = pd.getName();
Object value = https://www.it610.com/article/rs.getObject(columnName);
//设置对象属性值
pd.getWriteMethod().invoke(obj, value);
}
list.add(obj);
}
return list;
}
}
推荐阅读
- PyTorch|PyTorch: hook机制
- 动手学习深度学习|《动手学深度学习》Task04(机器翻译及相关技术+注意力机制与Seq2seq模型+Transformer)
- Java的锁机制:synchronized和CAS详解
- JavaScript|JavaScript — 线程机制与事件机制
- Android源码进阶之深入理解SharedPreference原理机制
- web|在Cookie被禁用的情况下使用url rewrite机制保持Session
- 在|在 .NET 平台使用 ReflectionDynamicObject 优化反射调用代码
- 浏览器三种刷新方式的缓存机制-----单点登录SSO的实现原理---PHP版单点登陆实现方案
- Android|Android 5.0 Handler 消息机制源码流程分析
- Android|Android全面解析之由浅及深Handler消息机制