Impala通用工具类封装

使用前引入必要的mvn依赖:

       <dependency>
            <groupId>org.apache.hive</groupId>
            <artifactId>hive-jdbc</artifactId>
            <version>2.3.3</version>
        </dependency>

下面是整合代码:

public class ImpalaUtil {

    private static final org.apache.log4j.Logger logger= LogManager.getLogger(ImpalaUtil.class);
    /**
     * 获取连接实例
     * @param jdbcUrl
     * @param jdbcDriver
     * @return
     * @throws Exception
     */
    public static Connection getInstance(String jdbcUrl,String jdbcDriver) throws Exception{
        //加载驱动
        Class.forName(jdbcDriver);
        //创建连接
        return DriverManager.getConnection(jdbcUrl);
    }

    /**
     * 构建查询工具类模板
     * @param jdbcUrl
     * @param jdbcDriver
     * @param sql
     * @throws SQLException
     */
    public static <R> R executeSql(String jdbcUrl, String jdbcDriver, String sql, Function<ResultSet,R> function) throws SQLException {
        Connection con = null;
        Statement stmt = null;
        ResultSet resultSet = null;

        try {
            con = getInstance(jdbcUrl, jdbcDriver);
            //创建语句
            stmt = con.createStatement();
            //执行sql并返回结果
            resultSet = stmt.executeQuery(sql);
            //处理返回结果
            return function.apply(resultSet);
        } catch (SQLException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            releaseResource(con,stmt,null,resultSet);
        }
        return null;
    }

    /**
     * 关闭连接,释放资源
     * @param conn
     * @param statement
     * @param preparedStatement
     * @param rs
     */
    public static void releaseResource(Connection conn, Statement statement, PreparedStatement preparedStatement, ResultSet rs) {
        try {
            if (rs != null) {
                try {
                    rs.close();
                } catch (Throwable e) {
                    e.printStackTrace();
                    logger.error(e);
                    logger.error("关闭rs失败");
                }
            }
            if (statement != null) {
                try {
                    statement.close();
                } catch (Throwable e) {
                    e.printStackTrace();
                    logger.error(e);
                    logger.error("关闭statement失败");
                }
            }
            if (preparedStatement != null) {
                try {
                    preparedStatement.close();
                } catch (Throwable e) {
                    e.printStackTrace();
                    logger.error(e);
                    logger.error("关闭preparedStatement失败");
                }
            }
            if (conn != null) {
                try {
                    conn.close();
                } catch (Throwable e) {
                    e.printStackTrace();
                    logger.error(e);
                    logger.error("关闭conn失败");
                }
            }
        } catch (Throwable e) {
            e.printStackTrace();
        }
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,845评论 18 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,929评论 25 708
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 12,854评论 2 59
  • 满眼疲惫 下肚的牛奶凉 恨不能把自己钉死 在没知觉的被窝 从冬天梦回初夏 不必牵挂毛衣 还湿答答地晾在架上 能在初...
    山屈生阅读 180评论 0 2
  • 凌乱的写了点不知道什么的发神经的心情之后 正儿八经写篇书评吧 讲讲这几天看完的《老师好美》。 知道这本书 是因为兔...
    阮溏忻阅读 1,397评论 0 1