zoukankan      html  css  js  c++  java
  • 数据库连接池

    数据库连接池

    一个用来存放数据库连接的容器。当被创建时,容器初始化,创建连接对象。

    当用户需要访问数据库是,从容器中获取连接对象,在访问完毕以后,归还连接对象到连接池中。

    使用数据库连接池的好处是:节约资源,用户访问更加高效。

    DataSource

    该接口为数据库连接池应该实现的标准接口

    getConnection 从连接池获取连接,返回一个Connection对象

    当对该方法返回的Connection对象调用close方法是,并不是销毁该连接,而是将该连接归还到数据库连接池中。

    常用连接池实现

    常用连接池实现有两个:

    1. C3P0

    2. Druid 阿里巴巴连接池

    使用步骤为,

    1. 导入jar包

    2. 定义配置文件

    3. 创建核心对象 数据库连接池对象

    其中C3P0和Druid的使用存在有微小的差别,C3P0使用xml作为配置文件。而Druid则使用.properties做为配置文件。

    同时,Druid创建数据库连接池时,当需要应用不同配置时,

    DataSource dataSource = DruidDataSourceFactory.createDataSource(profile);
    

    应该提供加载了不同配置文件的Properties对象。

    而在C3P0中,如果需要应用不同的配置

    ComboPooledDataSource pollDataSource = new ComboPooledDataSource("student");
    

    只需要标识指定不同的配置的name属性值就可以了,不过不提供的话,那么将使用默认配置。

    还有一点区别就是在申请超过最大连接数的连接时,C3P0会阻塞到有空闲的连接,而Druid会抛出异常。

    Spring JDBC

    使用Spring JDBC以后,就不需要再手动申请释放Statement。

    使用步骤:

    1. 导入jar包

    2. 创建JdbcTemplated对象,依赖于数据源DataSource

    3. 调用JdbcTemplate的方法完成crud操作

    如:

    JdbcTemplate jdbcTemplate = new JdbcTemplate(DruidUtil.getDataSource());
    
    String sql = "update test set manay=? where name=?";
    System.out.println(jdbcTemplate.update(sql, 200, "张三"));
    

    常用方法

    1. update 执行所有DML语句,返回int值标志影响的函数

    2. queryForMap 将查询的记录封装为Map。既然是封装为Map也就意味着该方法只适合单条记录的情况

    3. queryForList 封装为List

    4. query 封装为为javaBean对象 第二个参数需要传递一个RowMapper接口实现类,他需要实现一个mapRow方法来封装数据。

      或者使用BeanPropertyRowMapper的构造方法来创建一个mRowMapper接口实现对象,它需要提供一个类的class。

      在接受到数据以后,它将自动封装。

      如:

      JdbcTemplate jdbcTemplate = new JdbcTemplate(DruidUtil.getDataSource());
      String sql = "select * from student";
      List<Student> students = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(Student.class));
      
    5. queryForObject 将查询到的数据封装为指定对象 第二个参数提供转换类型的字节码文件。一般用于查询结果为单行单列的数据

  • 相关阅读:
    Bootstrap表格的使用
    [JS练习] 瀑布流照片墙
    [C#基础] 委托
    [C#基础] 泛型
    [C#基础] 继承
    [C#基础] 类
    [C#基础] 数据类型
    Unity获取手机的电量时间
    C#网络通信Socket详解
    记C#一次服务器搭建和数据库应用
  • 原文地址:https://www.cnblogs.com/freesfu/p/13843781.html
Copyright © 2011-2022 走看看