// 这个是在添加数据
@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. Zygote总结

    Zygote是由init进程通过解析 init.zygote.rc 文件而创建的,zygote所对应的可执行程序 app_process,所对应的源文件是App_main.cpp,进程名为zygote ...

  2. [02]基于webservice权限系统

    面前,我们已经介绍过.如何使用cxf建立webservice. 那我们要介绍的这款许可制度表结构. 此权限管理系统分为部门管理.员工管理.角色管理,权限管理,授权的人才和企业管理(这里不涉及) 角色管 ...

  3. matlab 图像分块及恢复

    1. block_divide % 返回的块向量构成的矩阵,其维度信息为 K^2 * N,每一列由块构成的列向量 function P = block_divide(I, K) r = size(I, ...

  4. WPF 设置了阴影效果后,Y轴位置会有变化的问题

    原文:WPF 设置了阴影效果后,Y轴位置会有变化的问题 背景 最近遇到一个动画执行时,文本位置变化的问题.如下图: 如果你仔细看的话,当星星变小时,文本往下降了几个像素. 貌似有点莫名其妙,因为控件之 ...

  5. Qt中(图片)资源的三种使用方式

    Qt中使用图片资源的方法有很多种,以前我一直分不清各种之间的区别和Qt相应的处理机制,后来遇到一些实际的问题,然后再加上查阅源码和资料,总算弄明白一些事情,但是本文仅仅是个人理解,如有错误之处请告诉我 ...

  6. WPF中选择文件及文件夹

    最近从winform转WPF,遇到了各种各样的问题.然而网上的关于WPF的资料少之又少,甚至连基本的文件选择操作,百度搜索的首页都没有一个比较好的方法.所以,踩了几个坑之后,我把我得到的方法分享给大家 ...

  7. Callable,Runnable异同

    1.Runnable和Callable的区别 (1) Callable规定的方法是 call(), Runnable规定的方法是 run(). (2) Callable的任务执行后可返回值,而 Run ...

  8. echarts 堆叠折线

    option = { title: { text: '折线图堆叠' }, tooltip: { trigger: 'axis' }, legend: { data:['邮件营销','联盟广告','视频 ...

  9. sqlplus登录信息,列出所有表,列在表结构,sqlplus行和列显示设置,别名,Null值问题,细木工,DISTINCT

     1 sqlplus登录方式: 普通用户登录: 登录eg:C:\>sqlplusscott/11  (格式:sqlplus username/password) 退出eg:quit退出 超级 ...

  10. HDU 1598 find the most comfortable road (罗列+Kruskal) 并检查集合

    Problem Description XX星有很多城市,城市之间通过一种奇怪的快速公路SARS(Super Air Roam Structure---超级空中漫游结构)进行交流.每条SARS都对行驶 ...