首页>代码>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; } }

付洋麟 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日
微信网友_6486458139512832 LV1
2023年5月29日