【JavaWeb】数据库连接池和JDBC封装工具DBUtils |
您所在的位置:网站首页 › jdbc连接池工具类 › 【JavaWeb】数据库连接池和JDBC封装工具DBUtils |
目录 一、Druid开源连接池的使用 1.Druid的使用 2.使用配置方式完成连接池的使用 二、C3P0开源连接池的使用 1.C3P0的连接池的概述 2.C3P0的连接池的使用 2.1手动设置参数的方式 2.2采用配置文件的方式: 三、DBUtils的概述 1.什么是DBUtils 2.为什么要学习DBUtils 3.DBUtils的API 3.1QueryRunner对象:核心运行类 3.2DbUtils 4.DBUtils的添加操作 5.DBUtils的修改操作 6.DBUtils的删除操作 7.DBUtils的使用之查询的操作 7.1查询一条记录 7.2查询多条记录: 8.DBUtils的使用之ResultSetHandler的实现类 1.ArrayHandler和ArrayListHandler 2.BeanHandler和BeanListHandler 3.MapHandler和MapListHandler 4.ColumnListHandler、ScalarHandler 一、Druid开源连接池的使用Druid阿里旗下开源连接池产品,使用非常简单,可以与Spring框架进行快速整合。 1.Druid的使用 @Test /** * Druid的使用: * * 手动设置参数的方式 */ public void demo1(){ Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try{ // 使用连接池: DruidDataSource dataSource = new DruidDataSource(); // 手动设置数据库连接的参数: dataSource.setDriverClassName("com.mysql.jdbc.Driver"); dataSource.setUrl("jdbc:mysql:///web_test4"); dataSource.setUsername("root"); dataSource.setPassword("abc"); // 获得连接: // conn = JDBCUtils.getConnection(); conn = dataSource.getConnection(); // 编写SQL: String sql = "select * from account"; // 预编译SQL: pstmt = conn.prepareStatement(sql); // 设置参数: // 执行SQL: rs = pstmt.executeQuery(); while(rs.next()){ System.out.println(rs.getInt("id")+" "+rs.getString("name")+" "+rs.getDouble("money")); } }catch(Exception e){ e.printStackTrace(); }finally{ JDBCUtils.release(rs, pstmt, conn); } } 2.使用配置方式完成连接池的使用 @Test /** * Druid的使用: * * 配置方式设置参数 * Druid配置方式可以使用属性文件配置的。 * * 文件名称没有规定但是属性文件中的key要一定的。 */ public void demo2(){ Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try{ // 使用连接池: // 从属性文件中获取: Properties properties = new Properties(); properties.load(new FileInputStream("src/druid.properties")); DataSource dataSource = DruidDataSourceFactory.createDataSource(properties); // 获得连接: // conn = JDBCUtils.getConnection(); conn = dataSource.getConnection(); // 编写SQL: String sql = "select * from account"; // 预编译SQL: pstmt = conn.prepareStatement(sql); // 设置参数: // 执行SQL: rs = pstmt.executeQuery(); while(rs.next()){ System.out.println(rs.getInt("id")+" "+rs.getString("name")+" "+rs.getDouble("money")); } }catch(Exception e){ e.printStackTrace(); }finally{ JDBCUtils.release(rs, pstmt, conn); } } 二、C3P0开源连接池的使用 1.C3P0的连接池的概述 2.C3P0的连接池的使用 2.1手动设置参数的方式 @Test /** * 手动设置参数的方式: */ public void demo1(){ Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try{ // 获得连接:从连接池中获取: // 创建连接池: ComboPooledDataSource dataSource = new ComboPooledDataSource(); // 设置连接参数: dataSource.setDriverClass("com.mysql.jdbc.Driver"); dataSource.setJdbcUrl("jdbc:mysql:///web_test4"); dataSource.setUser("root"); dataSource.setPassword("abc"); // 从连接池中获得连接: conn = dataSource.getConnection(); // 编写SQL: String sql = "select * from account"; // 预编译SQL: pstmt = conn.prepareStatement(sql); // 执行SQL: rs = pstmt.executeQuery(); while(rs.next()){ System.out.println(rs.getInt("id")+" "+rs.getString("name")+" "+rs.getDouble("money")); } }catch(Exception e){ e.printStackTrace(); }finally{ JDBCUtils.release(rs, pstmt, conn); } } 2.2采用配置文件的方式:2.2.1配置连接池:
2.2.2使用连接池 @Test /** * 采用配置文件的方式: */ public void demo2(){ Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try{ // 获得连接:从连接池中获取: // 创建连接池://创建连接池默认去类路径下查找c3p0-config.xml ComboPooledDataSource dataSource = new ComboPooledDataSource(); // 从连接池中获得连接: conn = dataSource.getConnection(); // 编写SQL: String sql = "select * from account"; // 预编译SQL: pstmt = conn.prepareStatement(sql); // 执行SQL: rs = pstmt.executeQuery(); while(rs.next()){ System.out.println(rs.getInt("id")+" "+rs.getString("name")+" "+rs.getDouble("money")); } }catch(Exception e){ e.printStackTrace(); }finally{ JDBCUtils.release(rs, pstmt, conn); } } 三、DBUtils的概述 1.什么是DBUtils 2.为什么要学习DBUtils因为JDBC手写比较麻烦,而且有非常多的代码是类似的。比如获得连接,预编译SQL,释放资源等..那么可以将这些代码抽取出来放到工具类中。将类似的代码进行抽取。大大简化JDBC的编程。 3.DBUtils的API 3.1QueryRunner对象:核心运行类 构造方法:
方法:
在一般情况下如果执行CRUD的操作: 构造: QueryRunner(DataSource ds); 方法: int update(String sql,Object… args); T query(String sql,ResultSetHandler rsh,Object… args);如果有事务管理的话使用另一套完成CRUD的操作: 构造: QueryRunner(); 方法: int update(Connection conn,String sql,Object… args); T query(Connection conn,String sql,ResultSetHandler rsh,Object… args);方法: 3.2DbUtils
4.DBUtils的添加操作 @Test /** * 添加操作 */ public void demo1() throws SQLException{ // 创建核心类:QueryRunner: QueryRunner queryRunner = new QueryRunner(JDBCUtils2.getDataSource()); queryRunner.update("insert into account values (null,?,?)", "ddd",10000); } 5.DBUtils的修改操作 @Test /** * 修改操作 */ public void demo2() throws SQLException{ // 创建核心类: QueryRunner queryRunner = new QueryRunner(JDBCUtils2.getDataSource()); queryRunner.update("update account set name=?,money=? where id =?", "eee",20000,4); } 6.DBUtils的删除操作 @Test /** * 删除操作 */ public void demo3() throws SQLException{ // 创建核心类: QueryRunner queryRunner = new QueryRunner(JDBCUtils2.getDataSource()); queryRunner.update("delete from account where id = ?", 3); } 7.DBUtils的使用之查询的操作 7.1查询一条记录 创建一个对象:Account
查询代码实现: 7.2查询多条记录: 8.DBUtils的使用之ResultSetHandler的实现类 1.ArrayHandler和ArrayListHandler ArrayHandler: 将一条记录封装到一个数组当中。这个数组应该是Object[]。 ArrayListHandler: 将多条记录封装到一个装有Object[]的List集合中。 2.BeanHandler和BeanListHandler BeanHandler:
BeanListHandler: 将多条记录封装到一个装有JavaBean的List集合中。 3.MapHandler和MapListHandler MapHandler: 将一条记录封装到一个Map集合中,Map的key是列名,Map的value就是表中列的记录值。 MapListHandler: 将多条记录封装到一个装有Map的List集合中。 4.ColumnListHandler、ScalarHandler ColumnListHandler: 将数据中的某列封装到List集合中。 ScalarHandler: 将单个值封装。
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |