关于连接池和DBUtils

1、关于数据库连接池

连接池就是创建和管理一个连接缓冲池的技术,这些连接好被任意线程所使用,数据库连接池负责分配和管理、释放数据库连接,总而言之数据库连接池就是提高对数据库的操作性能。

数据库连接池:

(1)JNDI连接池:是早期Java名称目录接口,一种数据库连接池技术

(2)DBCP:通过JNDI调用

(3)Druid:由国内阿里巴巴开发的一种连接池技术,可提高sql语句的执行效率,性能好

(3)C3P0:是一个开放源代码的JDBC连接池

2、数据库连接池的使用(Druid为准)

(1)创建属性文件放到源代码文件夹下,可以任意后缀名结尾,这里推荐txt方便打开

基本配置:    
driverClassName=com.mysql.jdbc.Driver      //加载驱动类
url=jdbc:mysql://localhost:3306/test           //数据库连接URL
username=root                                          //数据库用户名
password=123456                                     //数据库密码
initialSize=2                                              //初始化连接池个数
maxActive=8                                             //最大连接池个数

(2)创建自定义DBTools类

public class DBTools{
         public static DataSource ds;       //创建数据源文件
         static{
               Properties properties = new Properties();   //属性文件对象
               try{
                  //加载属性文件
                  properties.load(DBTools.class.getResourceAsStream("/druid.txt"));
                  //把这个属性文件赋给ds
                  ds=DruidDataSourceFactory.createDataSource(properties);
              }catch(Exception e){
                     e.printStatckTrace();
              }
        }
}                    

(3)创建公共Query对象实体类(整个数据库操作依赖QueryRunner)

public class BaseDao{
    public QueryRunner query;      //创建对象
    public BaseDao(){     //谁调用我就使用
         query=new QueryRunner(DBTools.ds);
   }  
}

3、DBUtils的使用

DBUtils:简单的说DBUtils就是封装了JDBC的代码,简化了dao层的操作,提高工作的效率

使用DBUtils

(1)导入jar包:mysql驱动、数据库连接池jar包、DBUtils工具jar包

(2)创建属性配置文件

(3)自定义DBTools工具类,方便连接

4、DBUtils的API

query(sql,ResultSetHander<T>rsh,Object ... params)    //查询操作,返回一个有关泛型的集合,可添加参数,也可没有

update(String sql,Object ... params)     //数据库增删改操作,参数为sql语句和任何类型的参数

常用方法介绍:

(1)BeanHandler:将查询的第一行数据封装到user对象

(2)BeanListHandler:将查询的每一行数据封装到user对象,然后存入到list集合中

使用:return query.query(sql,new BeanListHandler<Student>(Student.class));

注意:必须指明类名

(3)ScalarHandler:返回的Long类型,适用于对象聚合函数的查询,count,max,avg,min,sum

使用:

String sql = "select count(1) from student";

return query.query(sql,new ScalarHandler<Long>())

猜你喜欢

转载自www.cnblogs.com/ByteBeat/p/11349258.html