// 这个是在添加数据
@Test
public void demo1() {
QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());
String sql = "insert into Book values(?,?)";
try {
int num = qr.update(sql, 26, "明朝那些事");
if (num > 0) {
System.out.println("添加成功");
} else {
System.out.println("添加失败");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} // 修改数据
@Test
public void demo2() {
QueryRunner queryRunner = new QueryRunner(JDBCUtils.getDataSource());
try {
String sql = "update Book set bname=? where id=?";
int num = queryRunner.update(sql, "史记", 29);
if (num > 0) {
System.out.println("添加成功");
} else {
System.out.println("添加失败");
}
} catch (Exception e) {
e.printStackTrace();
}
} // 下面的是查询语句
// 将数据表中的第一条数据封装成object
@Test
public void demo3() {
QueryRunner queryRunner = new QueryRunner(JDBCUtils.getDataSource());
try {
String sql = "select * from Book";
Object[] objects = queryRunner.query(sql, new ArrayHandler()); System.out.println(Arrays.toString(objects));
} catch (Exception e) {
e.printStackTrace();
}
} //将数据表中的每一条数据封装成object new ArrayListHandler()
@Test
public void demo4(){
QueryRunner queryRunner=new QueryRunner(JDBCUtils.getDataSource());
try {
String sql="select * from Book";
List<Object[]> list=queryRunner.query(sql,new ArrayListHandler()); for(Object[] objects:list){
System.out.println(Arrays.toString(objects));
} } catch (Exception e) {
e.printStackTrace();
}
} //把数据表中的第一条数据封装成JavaBean实体类对象 BeanHandler
@Test
public void demo5(){
QueryRunner queryRunner=new QueryRunner(JDBCUtils.getDataSource());
try {
String sql="select * from Book";
Book list=queryRunner.query(sql,new BeanHandler<>(Book.class)); System.out.println(list.toString());
} catch (Exception e) {
e.printStackTrace();
}
} //把数据表中的每一条数据封装成JavaBean实体类对象 BeanListHandler
@Test
public void demo6(){
QueryRunner queryRunner=new QueryRunner(JDBCUtils.getDataSource());
try {
String sql="select * from Book";
List<Book> list=queryRunner.query(sql,new BeanListHandler<>(Book.class)); for(Book book:list)
System.out.println(book.toString());
} catch (Exception e) {
e.printStackTrace();
}
} //把数据表中的第一条数据封装成Map集合 ,键:列名 值:该列的值 new MapHandler()
@Test
public void demo7(){
QueryRunner queryRunner=new QueryRunner(JDBCUtils.getDataSource());
try {
String sql="select * from Book";
Map<String,Object > map=queryRunner.query(sql,new MapHandler()); System.out.println(map);
} catch (Exception e) {
e.printStackTrace();
}
} //把数据表中的每一条数据封装成Map集合 ,键:列名 值:该列的值 new MapListHandler()
@Test
public void demo8(){
QueryRunner queryRunner=new QueryRunner(JDBCUtils.getDataSource());
try {
String sql="select * from Book";
List<Map<String,Object >>list=queryRunner.query(sql,new MapListHandler());
for(Map<String,Object>map:list)
System.out.println(map);
} catch (Exception e) {
e.printStackTrace();
}
} // ColunmListHandler: 把数据表中的没一条数据封装成 Map集合, 键:列名 值:该列的值 , 然后把每一行的Map集合装入到一个List集合中.
@Test
public void demo9() {
// 1. 获取可以执行SQL语句的对象: QueryRunner
QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());
// 2. 编写需要执行的SQL语句
String sql = "select * from Book;";
// 3. 执行SQL语句, 获取结果集
try {
List<Object> list = qr.query(sql, new ColumnListHandler("bname"));
System.out.println(list);
} catch (SQLException e) {
e.printStackTrace();
}
} // ScalarHandler: 把数据表中的没一条数据封装成 Map集合, 键:列名 值:该列的值 , 然后把每一行的Map集合装入到一个List集合中.
@Test
public void demo10() {
// 1. 获取可以执行SQL语句的对象: QueryRunner
QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());
// 2. 编写需要执行的SQL语句
String sql = "select count(*) from Book;";
// 3. 执行SQL语句, 获取结果集
try {
Object obj = qr.query(sql, new ScalarHandler());
System.out.println(obj);
} catch (SQLException e) {
e.printStackTrace();
}
} // KeyedHandler: 把数据表中的没一条数据封装成 Map集合, 键:列名 值:该列的值 , 然后把每一行的Map集合装入到一个List集合中.
@Test
public void demo11() {
// 1. 获取可以执行SQL语句的对象: QueryRunner
QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());
// 2. 编写需要执行的SQL语句
String sql = "select * from Book;";
// 3. 执行SQL语句, 获取结果集
try {
Map<Object, Map<String, Object>> map = qr.query(sql, new KeyedHandler("bname"));
for (Object key : map.keySet()) {
System.out.println(key + "..." + map.get(key));
} } catch (SQLException e) {
e.printStackTrace();
}
}

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

  1. Java第三方数据库连接池库-DBCP-C3P0-Tomcat内置连接池

    连接池原理 数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”.预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去.我们可以通过设定连接池 ...

  2. .数据库连接池技术:DBCP和C3P0

    数据库连接池技术:DBCP和C3P0 1.什么是数据库连接池 已知的方法是需要访问数据库的时候进行一次数据库的连接,对数据库操作完之后再释放这个连接,通常这样业务是缺点很明显的: 用户每次请求都需要向 ...

  3. [转]阿里巴巴数据库连接池 druid配置详解

    一.背景 java程序很大一部分要操作数据库,为了提高性能操作数据库的时候,又不得不使用数据库连接池.数据库连接池有很多选择,c3p.dhcp.proxool等,druid作为一名后起之秀,凭借其出色 ...

  4. 数据库连接池c3p0学习

    这里只记录c3p0的数据源,不会涉及到其它方面和别的数据库连接池的对比 配置文件主要的实现方式有三种: 1.手写代码去加载一个配置文件 创建一个config.properties文件如下: drive ...

  5. <十四>JDBC_c3p0数据库连接池

    配置文件:c3p0-config.xml <!-- Hibernate官方推荐使用的数据库连接池即c3p0;dbcp是Tomcat在数据源中使用 --><c3p0-config> ...

  6. <十三>JDBC_dbcp数据库连接池

    配置文件:jdbc.properties username=rootpassword=kkdriverClassName=com.mysql.jdbc.Driverurl=jdbc:mysql://1 ...

  7. c3p0数据库连接池的使用详解

    首先,什么是c3p0?下面是百度百科的解释: C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展.目前使用它的开源项目有Hibernate,Sp ...

  8. Mybatis-update - 数据库死锁 - 获取数据库连接池等待

    最近学习测试mybatis,单个增删改查都没问题,最后使用mvn test的时候发现了几个问题: update失败,原因是数据库死锁 select等待,原因是connection连接池被用光了,需要等 ...

  9. 从零开始学 Java - 数据库连接池的选择 Druid

    我先说说数据库连接 数据库大家都不陌生,从名字就能看出来它是「存放数据的仓库」,那我们怎么去「仓库」取东西呢?当然需要钥匙啦!这就是我们的数据库用户名.密码了,然后我们就可以打开门去任意的存取东西了. ...

随机推荐

  1. WPF动画结束后的行为方式

    原文:WPF动画结束后的行为方式 在WPF中可以使用Animation来完成动画功能,如移动,旋转等,最近写的一个程序需要实现控件的移动,包括自动移动和手动控制.原理很简单,就是改变控件的Margin ...

  2. 【t064】最勇敢的机器人

    Time Limit: 1 second Memory Limit: 128 MB [问题描述] [背景] Wind设计了很多机器人.但是它们都认为自己是最强的,于是,一场比赛开始了~ [问题描述] ...

  3. UITableView的一些事1

    方法1: _tableview = [[UITableView alloc]initWithFrame:CGRectMake(0, 0,self.view.bounds.size.width,self ...

  4. android开发之微信支付功能的实现

    移动开发中,支付类的App越来越多,对于开发者来说也是不可少的,不可不会的:下面就来说一说支付开发的流程 1.申请你的AppID 请到 开发者应用登记页面 进行登记,登记并选择移动应用进行设置后,将该 ...

  5. 【非常高%】【codeforces 733A】Grasshopper And the String

    time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...

  6. 反编译Jar包

    Jar 包(Java Archive)是对 Java 程序的打包,它可能包含源码,也可能没有. 对于有包含源码的 Jar 包,在 Eclipse 工程里设定好 source code 路径后能直接查看 ...

  7. telnet 的使用(ping 与 telnet)

    基本用法 >> telnet localhost 23 // 23 表示 telnet 服务的端口号,不写端口号也可以,telnet 默认绑定的端口号就是 23 // netstat -a ...

  8. RadioButton分组的实现

    原文:RadioButton分组的实现     XAML如下 <StackPanel> <RadioButton GroupName="colorgrp"> ...

  9. WolframAlpha 的使用

    WolframAlpha 1. 求解复杂方程组 a+b=−4ab+c=2ac=1 直接点开网站,在输入框中输入,a+b=-4;ab+c=2;ac=1;(逗号分割开来),

  10. win10 uwp 使用 asp dotnet core 做图床服务器客户端

    原文 win10 uwp 使用 asp dotnet core 做图床服务器客户端 本文告诉大家如何在 UWP 做客户端和 asp dotnet core 做服务器端来做一个图床工具   服务器端 从 ...