首页 > 其他分享 >封装Druid连接池

封装Druid连接池

时间:2022-10-16 14:44:26浏览次数:37  
标签:封装 resultSet Druid try connection static close public 连接池

public class LsDataSourceUtils {
public class LsDataSourceUtils {

     //   获取Druid数据库连接池对象
    private   static DataSource dataSource;
    /**
     *  使用静态代码块 读取配置文件内容  加载 Druid数据库连接池
     */
    static {

        try {
             //  读取src目录下 druid.properties
            Properties properties=new Properties();
            InputStream resourceAsStream = LsDataSourceUtils.class.getClassLoader().getResourceAsStream("druid.properties");
            properties.load(resourceAsStream);
            //  交给我们的Druid数据库连接池
             dataSource = DruidDataSourceFactory.createDataSource(properties);
        }catch (Exception e){
                 e.printStackTrace();
        }
    }
    /**
     *    封装获取连接的方法
     */
    public static Connection getConnection(){
        try {
           return  dataSource.getConnection();
        }catch (Exception e){
            return  null;
        }
    }
    /**
     *   释放jdbc连接
     */
    public static  void close(Connection connection, Statement statement, ResultSet resultSet){
        if(connection!=null){
            try {
                connection.close();
            } catch (SQLException e) {
                throw new RuntimeException(e);
            }
        }
        if(statement!=null){
            try {
                statement.close();
            } catch (SQLException e) {
                throw new RuntimeException(e);
            }
        }
        if(resultSet!=null){
            try {
                resultSet.close();
            } catch (SQLException e) {
                throw new RuntimeException(e);
            }
        }
    }

    public static  void close(Connection connection, Statement statement){
        close(connection,statement,null);
    }
public class Test {
    public static void main(String[] args) throws SQLException {
        Connection connection=LsDataSourceUtils.getConnection();
        // 获取预编译执行者对象 防止sql注入的问题
        PreparedStatement preparedStatement=
                connection.prepareStatement("select *from user where id=? ");
        //设置参数
        preparedStatement.setLong(1,2);
        //执行sql
        ResultSet resultSet=preparedStatement.executeQuery();
        if(!resultSet.next()){
            return;
        }
        // 对结果进行处理
        // 获取该行数据第一列的id
        long id = resultSet.getLong("id");
        // 获取该行数据第二列的name
        String name = resultSet.getString("name");
        // 获取该行数据第三列的age
        int age = resultSet.getInt("age");
        // 将db中查询到数据封装成user对象
        UserEntity userEntity=new UserEntity(id,name,age);
        System.out.println(userEntity);

    }


}

 

标签:封装,resultSet,Druid,try,connection,static,close,public,连接池
From: https://www.cnblogs.com/lsnotbug/p/16796204.html

相关文章

  • Java基础(七)| 类、对象、封装和构造详解
    ⭐本专栏旨在对JAVA的基础语法及知识点进行全面且详细的讲解,完成从0到1的java学习,面向零基础及入门的学习者,通过专栏的学习可以熟练掌握JAVA编程,同时为后续的框架学习,进阶开......
  • 封装的含义及流程
    下面类是public来修饰,对于成员变量和方法而言,在项目中的任意一个地方都可以访问publicclassUserInfo{publicintid;publicStringname;publicvoids......
  • redis:jedis连接池
    Jedis本身是线程不安全的,并且频繁的创建和销毁连接会有性能损耗,因此我们推荐大家使用Jedis连接池代替Jedis的直连方式。importredis.clients.jedis.*;publicclassJe......
  • day47-JDBC和连接池03
    JDBC和连接池038.事务8.1事务介绍基本介绍JDBC程序中当一个Connection对象创建时,默认情况下是自动提交事务:每次执行一个SQL语句时,如果执行成功,就会向数据库自动提交......
  • 前端枚举enum的应用(Element)封装
    什么是枚举Enum枚举Enum是在众多语言中都有的一种数据类型,JavaScript中还没有(TypeScript有)。用来表示一些特定类别的常量数据,如性别、学历、方向、账户状态等,项目开发中......
  • RESTFUL 返回结果统一封装
    统一结果封装返回结果***返回信息*@param<T>*/publicclassR<T>implementsSerializable{/***状态码*/privateintcode;/**......
  • js封装时间格式化
     /***方法*@description对Date的扩展,将Date转换为指定格式的String*月(M)、日(d)、小时(H)、分(m)、秒(s)、季度(q)可以用1~2个占位符,*年(y)可......
  • day46-JDBC和连接池02
    JDBC和连接池023.ResultSet[结果集]基本介绍表示数据库结果集的数据表,通常通过执行查询数据库的语句生成ResultSet对象保持一个光标指向其当前的数据行,最初,光标位于......
  • JDBC C3P0连接池
    //Utils1importcom.mchange.v2.c3p0.ComboPooledDataSource;2importjavax.sql.DataSource;3importjava.sql.Connection;4importjava.sql.ResultSet;5i......
  • thinkphp5.1全局验证层封装
    1.在很多场景下我们都要对表单提交的数据进行验证,那么如何实现一个验证的重复使用呢,那就让我们来封装一个全局的验证层吧!首先我们创建validate,如下图这样,我们文件夹下就出现......