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>())