首页>代码>java操作JDBC实现增删改查案例>/java-jdbc-demo/src/main/java/com/cxs/senior/handler/impl/ResultBeanAsListHandler.java
package com.cxs.senior.handler.impl;
import com.cxs.senior.handler.ResultHandler;
import com.cxs.senior.utils.UnderlineToHumpCaseUtil;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Field;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
* @Project: java-jdbc-demo
* @Author: cxs
* @Create: 2022/8/31 15:34
* @Description:
**/
public class ResultBeanAsListHandler<T> implements ResultHandler<List<T>> {
private Class<T> tClass;
public ResultBeanAsListHandler(Class tClass){
this.tClass = tClass;
}
@Override
public List<T> resultHandle(ResultSet resultSet) {
List<T> result = new ArrayList<>();
List<String> fildsNames = (tClass.getDeclaredFields() != null && tClass.getDeclaredFields().length > 0) ?
Arrays.stream(tClass.getDeclaredFields()).map(Field::getName).collect(Collectors.toList()) :
new ArrayList<>(0);
try {
ResultSetMetaData metaData = resultSet.getMetaData();
while (resultSet.next()) {
T obj = this.tClass.newInstance();
for (int i = 1; i <= metaData.getColumnCount(); i++) {
try {
String name = metaData.getColumnLabel(i);
if (!fildsNames.contains(UnderlineToHumpCaseUtil.underlineToHumpCase(name))) {
} else {
PropertyDescriptor pd = new PropertyDescriptor(UnderlineToHumpCaseUtil.underlineToHumpCase(name), tClass);
pd.getWriteMethod().invoke(obj, resultSet.getObject(name));
}
} catch (Exception e) {
e.printStackTrace();
continue;
}
}
result.add(obj);
}
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
}
最近浏览更多
nanjifeng8
7月8日
暂无贡献等级
付洋麟 LV5
4月23日
2036495585 LV9
2023年9月25日
z1433151083 LV9
2023年9月7日
ericxu1116 LV24
2023年6月14日
不嘻嘻 LV8
2023年6月12日
wuge123 LV8
2023年6月12日
A-sunny-day LV4
2023年6月10日
Merdan_810
2023年6月9日
暂无贡献等级
6389181 LV7
2023年6月1日

最近下载
