sql的结果集转换为集合

这是一个关于数据库查询的Java代码示例,使用了不同的数据库查询工具类(如MySQLQueryTool、OracleQueryTool等),实现了从数据库中执行SQL查询并把结果转换为Course对象的集合。如果查询过程中出现异常,会捕获SQLException并返回错误信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   try {
                String sql="select *  from course";
                JobDatasource  datasource=new JobDatasource();
                BaseQueryTool queryTool = QueryToolFactory.getByDbType(datasource,true);
                Connection conn = queryTool.getConnection();
                Statement stmt = conn.createStatement();
                ResultSet set = stmt.executeQuery(sql);
                //sql查询出来的数据转换为集合
                BeanListHandler<Course> bh=new BeanListHandler<Course>(Course.class);
                List<Course> courseList=bh.handle(set);
                conn.close();
                stmt.close();
                return AjaxResult.success(courseList);
            } catch (SQLException e) {
                logger.error("数据库查询失败!,失败原因:"+e.getMessage());
                return AjaxResult.success(e.getMessage());
            }

查询数据的工具类:

package com.appraise.common.tool;


import com.appraise.common.core.domain.entity.JobDatasource;
import com.appraise.common.utils.JdbcConstants;
import com.appraise.common.utils.RdbmsException;

import java.sql.SQLException;

/**
 * 工具类,获取单例实体
 *
 * @author zhouhongfa@gz-yibo.com
 * @ClassName QueryToolFactory
 * @Version 1.0
 * @since 2019/7/18 9:36
 */
public class QueryToolFactory {

    public static BaseQueryTool getByDbType(JobDatasource jobDatasource,boolean flag) {
        //获取dbType
        String datasource = jobDatasource.getDatasource();
        if (JdbcConstants.MYSQL.equals(datasource)) {
            return getMySQLQueryToolInstance(jobDatasource,flag);
        } else if (JdbcConstants.ORACLE.equals(datasource)) {
            return getOracleQueryToolInstance(jobDatasource,flag);
        } else if (JdbcConstants.POSTGRESQL.equals(datasource)) {
            return getPostgresqlQueryToolInstance(jobDatasource,flag);
        } else if (JdbcConstants.SQL_SERVER.equals(datasource)) {
            return getSqlserverQueryToolInstance(jobDatasource,flag);
        }else if (JdbcConstants.HIVE.equals(datasource)) {
            return getHiveQueryToolInstance(jobDatasource,flag);
        } else if (JdbcConstants.CLICKHOUSE.equals(datasource)) {
            return getClickHouseQueryToolInstance(jobDatasource,flag);
        }else if (JdbcConstants.HBASE20XSQL.equals(datasource)) {
            return getHbase20XsqlQueryToolQueryToolInstance(jobDatasource,flag);
        }
        throw new UnsupportedOperationException("找不到该类型: ".concat(datasource));
    }

    private static BaseQueryTool getMySQLQueryToolInstance(JobDatasource jdbcDatasource,boolean flag) {
        try {
            return new MySQLQueryTool(jdbcDatasource,flag);
        } catch (Exception e) {
            throw RdbmsException.asConnException(JdbcConstants.MYSQL,
                    e,jdbcDatasource.getJdbcUsername(),jdbcDatasource.getDatasourceName());
        }
    }

    private static BaseQueryTool getOracleQueryToolInstance(JobDatasource jdbcDatasource,boolean flag) {
        try {
            return new OracleQueryTool(jdbcDatasource,flag);
        } catch (SQLException e) {
            throw RdbmsException.asConnException(JdbcConstants.ORACLE,
                    e,jdbcDatasource.getJdbcUsername(),jdbcDatasource.getDatasourceName());
        }
    }

    private static BaseQueryTool getPostgresqlQueryToolInstance(JobDatasource jdbcDatasource,boolean flag) {
        try {
            return new PostgresqlQueryTool(jdbcDatasource,flag);
        } catch (SQLException e) {
            throw RdbmsException.asConnException(JdbcConstants.POSTGRESQL,
                    e,jdbcDatasource.getJdbcUsername(),jdbcDatasource.getDatasourceName());
        }
    }

    private static BaseQueryTool getSqlserverQueryToolInstance(JobDatasource jdbcDatasource,boolean flag) {
        try {
            return new SqlServerQueryTool(jdbcDatasource,flag);
        } catch (SQLException e) {
            throw RdbmsException.asConnException(JdbcConstants.SQL_SERVER,
                    e,jdbcDatasource.getJdbcUsername(),jdbcDatasource.getDatasourceName());
        }
    }

    private static BaseQueryTool getHiveQueryToolInstance(JobDatasource jdbcDatasource,boolean flag) {
        try {
            return new HiveQueryTool(jdbcDatasource,flag);
        } catch (SQLException e) {
            throw RdbmsException.asConnException(JdbcConstants.HIVE,
                    e,jdbcDatasource.getJdbcUsername(),jdbcDatasource.getDatasourceName());
        }
    }
    private static BaseQueryTool getClickHouseQueryToolInstance(JobDatasource jdbcDatasource,boolean flag) {
        try {
            return new ClickHouseQueryTool(jdbcDatasource,flag);
        } catch (SQLException e) {
            throw RdbmsException.asConnException(JdbcConstants.CLICKHOUSE,
                    e, jdbcDatasource.getJdbcUsername(), jdbcDatasource.getDatasourceName());
        }
    }

    private static Hbase20XsqlQueryTool getHbase20XsqlQueryToolQueryToolInstance(JobDatasource jdbcDatasource,boolean flag) {
        try {
            return new Hbase20XsqlQueryTool(jdbcDatasource,flag);
        } catch (SQLException e) {
            throw RdbmsException.asConnException(JdbcConstants.HBASE20XSQL,
                    e, jdbcDatasource.getJdbcUsername(), jdbcDatasource.getDatasourceName());
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值