数据库连接池之_DButils

  1 // 这个是在添加数据
  2     @Test
  3     public void demo1() {
  4         QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());
  5         String sql = "insert into Book values(?,?)";
  6         try {
  7             int num = qr.update(sql, 26, "明朝那些事");
  8             if (num > 0) {
  9                 System.out.println("添加成功");
 10             } else {
 11                 System.out.println("添加失败");
 12             }
 13         } catch (SQLException e) {
 14             // TODO Auto-generated catch block
 15             e.printStackTrace();
 16         }
 17     }
 18
 19     // 修改数据
 20     @Test
 21     public void demo2() {
 22         QueryRunner queryRunner = new QueryRunner(JDBCUtils.getDataSource());
 23         try {
 24             String sql = "update Book set bname=? where id=?";
 25             int num = queryRunner.update(sql, "史记", 29);
 26             if (num > 0) {
 27                 System.out.println("添加成功");
 28             } else {
 29                 System.out.println("添加失败");
 30             }
 31         } catch (Exception e) {
 32             e.printStackTrace();
 33         }
 34     }
 35
 36     // 下面的是查询语句
 37     // 将数据表中的第一条数据封装成object
 38     @Test
 39     public void demo3() {
 40         QueryRunner queryRunner = new QueryRunner(JDBCUtils.getDataSource());
 41         try {
 42             String sql = "select * from Book";
 43             Object[] objects = queryRunner.query(sql, new ArrayHandler());
 44
 45             System.out.println(Arrays.toString(objects));
 46         } catch (Exception e) {
 47             e.printStackTrace();
 48         }
 49     }
 50
 51     //将数据表中的每一条数据封装成object    new ArrayListHandler()
 52     @Test
 53     public void demo4(){
 54         QueryRunner queryRunner=new QueryRunner(JDBCUtils.getDataSource());
 55         try {
 56             String sql="select * from Book";
 57             List<Object[]> list=queryRunner.query(sql,new ArrayListHandler());
 58
 59             for(Object[] objects:list){
 60                 System.out.println(Arrays.toString(objects));
 61             }
 62
 63         } catch (Exception e) {
 64             e.printStackTrace();
 65         }
 66     }
 67
 68
 69     //把数据表中的第一条数据封装成JavaBean实体类对象   BeanHandler
 70     @Test
 71     public void demo5(){
 72         QueryRunner queryRunner=new QueryRunner(JDBCUtils.getDataSource());
 73         try {
 74             String sql="select * from Book";
 75             Book list=queryRunner.query(sql,new BeanHandler<>(Book.class));
 76
 77             System.out.println(list.toString());
 78         } catch (Exception e) {
 79             e.printStackTrace();
 80         }
 81     }
 82
 83
 84     //把数据表中的每一条数据封装成JavaBean实体类对象   BeanListHandler
 85         @Test
 86     public void demo6(){
 87             QueryRunner queryRunner=new QueryRunner(JDBCUtils.getDataSource());
 88             try {
 89                 String sql="select * from Book";
 90                 List<Book> list=queryRunner.query(sql,new BeanListHandler<>(Book.class));
 91
 92                 for(Book book:list)
 93                     System.out.println(book.toString());
 94             } catch (Exception e) {
 95                 e.printStackTrace();
 96             }
 97         }
 98
 99     //把数据表中的第一条数据封装成Map集合 ,键:列名  值:该列的值 new MapHandler()
100     @Test
101     public void demo7(){
102         QueryRunner queryRunner=new QueryRunner(JDBCUtils.getDataSource());
103         try {
104             String sql="select * from Book";
105             Map<String,Object > map=queryRunner.query(sql,new MapHandler());
106
107             System.out.println(map);
108         } catch (Exception e) {
109             e.printStackTrace();
110         }
111     }
112
113     //把数据表中的每一条数据封装成Map集合 ,键:列名  值:该列的值 new MapListHandler()
114         @Test
115         public void demo8(){
116             QueryRunner queryRunner=new QueryRunner(JDBCUtils.getDataSource());
117             try {
118                 String sql="select * from Book";
119                 List<Map<String,Object >>list=queryRunner.query(sql,new MapListHandler());
120                for(Map<String,Object>map:list)
121                 System.out.println(map);
122             } catch (Exception e) {
123                 e.printStackTrace();
124             }
125         }
126
127         // ColunmListHandler: 把数据表中的没一条数据封装成 Map集合, 键:列名      值:该列的值 , 然后把每一行的Map集合装入到一个List集合中.
128         @Test
129         public void demo9() {
130             // 1. 获取可以执行SQL语句的对象: QueryRunner
131             QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());
132             // 2. 编写需要执行的SQL语句
133             String sql = "select * from Book;";
134             // 3. 执行SQL语句, 获取结果集
135             try {
136                 List<Object> list = qr.query(sql, new ColumnListHandler("bname"));
137                 System.out.println(list);
138             } catch (SQLException e) {
139                 e.printStackTrace();
140             }
141         }
142
143         // ScalarHandler: 把数据表中的没一条数据封装成 Map集合, 键:列名      值:该列的值 , 然后把每一行的Map集合装入到一个List集合中.
144         @Test
145         public void demo10() {
146             // 1. 获取可以执行SQL语句的对象: QueryRunner
147             QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());
148             // 2. 编写需要执行的SQL语句
149             String sql = "select count(*) from Book;";
150             // 3. 执行SQL语句, 获取结果集
151             try {
152                 Object obj = qr.query(sql, new ScalarHandler());
153                 System.out.println(obj);
154             } catch (SQLException e) {
155                 e.printStackTrace();
156             }
157         }
158
159         // KeyedHandler: 把数据表中的没一条数据封装成 Map集合, 键:列名      值:该列的值 , 然后把每一行的Map集合装入到一个List集合中.
160         @Test
161         public void demo11() {
162             // 1. 获取可以执行SQL语句的对象: QueryRunner
163             QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());
164             // 2. 编写需要执行的SQL语句
165             String sql = "select * from Book;";
166             // 3. 执行SQL语句, 获取结果集
167             try {
168                 Map<Object, Map<String, Object>> map = qr.query(sql, new KeyedHandler("bname"));
169                 for (Object key : map.keySet()) {
170                     System.out.println(key + "..." + map.get(key));
171                 }
172
173             } catch (SQLException e) {
174                 e.printStackTrace();
175             }
176         }
时间: 2024-10-10 05:18:12

数据库连接池之_DButils的相关文章

数据库连接池

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权:凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记. 数据库连接池简介: 数据库连接对象是有限资源,所以数据库连接池是用于负责分配.管理和释放数据库连接对象,它允许应用程序重复使用一个现有的数据库连接对象,而不是再重新建立一个:这一点实际上和线程池的概念差不多.数据库连接池会释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏,这项技术能明显提高对数据库操作的性能. 不使用

JDBC数据库连接池技术

在JDBC中,获得连接或释放资源是非常消耗系统资源的两个过程,为了解决此类性能问题,通常采用连接池技术,来共享连接.这样我们就不需要每次都创建连接.释放连接了,这些操作都交给了连接池. 用池的概念来管理Connection,这样可以重复使用Connection.有了连接池以后就不用自己亲自创建连接而是通过连接池来获得Connection对象.当使用完Connection之后,调用Connection的close()方法不是真的将连接关闭,而是把Connection归还给连接池.连接池就可以继续保

Druid数据库连接池两种简单使用方式

阿里巴巴推出的国产数据库连接池,据网上测试对比,比目前的DBCP或C3P0数据库连接池性能更好 简单使用介绍 Druid与其他数据库连接池使用方法基本一样(与DBCP非常相似),将数据库的连接信息全部配置给DataSource对象. 下面给出2种配置方法实例: 1. 纯Java代码创建 DruidDataSource dataSource = new DruidDataSource();dataSource.setDriverClassName("com.mysql.jdbc.Driver&qu

几种常见数据库连接池的使用比较

感觉在介绍之前有必要阐述一下连接池的几个概念,有助于后边一些文字的理解. 最原始的数据库使用就是打开一个连接并进行使用,使用过后一定要关闭连接释放资源.由于频繁的打开和关闭连接对jvm包括数据库都有一定的资源负荷,尤其应用压力较大时资源占用比较多容易产生性能问题.由此使用连接池的作用就显现出来,他的原理其实不复杂:先打开一定数量的数据库连接,当使用的时候分配给调用者,调用完毕后返回给连接池,注意返回给连接池后这些连接并不会关闭,而是准备给下一个调用者进行分配.由此可以看出连接池节省了大量的数据库

数据库连接池配置说明

1. 引言 1.1 定义 数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出.对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标.数据库连接池正是针对这个问题提出来的. 数据库连接池负责分配.管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个:释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏.这项技术能明显提高对数据库操作的性能. 1.2 参考资料 DBC

数据库连接池的理解和使用

一.什么是数据库连接池? 官方:数据库连接池(Connection pooling)是程序启动时建立足够的数据库连接,并将这些连接组成一个连接池,由程序动态地对池中的连接进行申请,使用,释放. 个人理解:创建数据库连接是一个很耗时的操作,也容易对数据库造成安全隐患.所以,在程序初始化的时候,集中创建多个数据库连接,并把他们集中管理,供程序使用,可以保证较快的数据库读写速度,还更加安全可靠. 二.数据库连接池的运行机制 (1) 程序初始化时创建连接池 (2) 使用时向连接池申请可用连接 (3) 使

数据库连接池和connection的理解

数据库连接池Data Source Pool的理解 1.数据库连接池允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个连接,避免了每个方法里new connection的耗费资源和时间. 2.数据库连接池是在项目启动时候初始化的,以方便程序运行时,随时可以调用这些已经被创建好的connection.只需要getConnection()就好. connection的建立.断开都由连接池自身来管理. 3.创建connection是个很耗时的操作,所以建议在项目启动的时候去创建connec

关于c3p0数据库连接池的简单使用

在使用开发基于数据库的web程序时,传统的模式基本是按以下步骤: 在主程序(如servlet.beans)中建立数据库连接. 进行sql操作 断开数据库连接. 这种模式开发,存在的问题: 普通的JDBC数据库连接使用 DriverManager 来获取,每次向数据库建立连接的时候都要将 Connection 加载到内存中,再验证用户名和密码(得花费0.05s-1s的时间).需要数据库连接的时候,就向数据库要求一个,执行完成后再断开连接.这样的方式将会消耗大量的资源和时间.数据库的连接资源并没有得

DBCP数据库连接池的简单使用

0.DBCP简介      DBCP(DataBase connection pool)数据库连接池是 apache 上的一个Java连接池项目.DBCP通过连接池预先同数据库建立一些连接放在内存中(即连接池中),应用程序需要建立数据库连接时直接到从接池中申请一个连接使用,用完后由连接池回收该连接,从而达到连接复用,减少资源消耗的目的. 1.DBCP所依赖的jar包(以下例子基于如下jar包版本)    commons-dbcp2-2.1.1.jar       commons-logging-