首页>代码>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;
    }
}
最近下载更多
最代码官方  LV168 2023年2月6日
最近浏览更多
付洋麟  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日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友