// 这个是在添加数据
@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. one hot 编码的实现

    one hot 编码,针对的是类别性属性(categorical),类别型属性可以为特征向量中的任一属性,比如性别(one hot 编码的意义在于,属性之间不具有数值上大小的区别,在对最后结果的影响上 ...

  2. 解决Request method 'GET' not supported问题

    博主最近遇到了这个问题,解决情况如下 第一种情况:前台页面的表单在一些情况下没有指定POST方法: Ajax没有指定POST方法: 后台方法在一定情况下需要指定POST方法: 第二种情况:前端参数类型 ...

  3. Node.js开发入门—使用AngularJS

    做一个Web应用,一般都有前台和后台,Node.js能够实现后台.利用jade模板引擎也能够生成一些简单的前台页面,但要想开发出具有实际意义的现代Web应用.还得搭配一个Web前端框架. Angula ...

  4. 小强的HTML5移动开发之路(23)—— jQuery Mobile入门

    一.下载jQuery Mobile 下载地址:http://jquerymobile.com/ 点击Download 下载如下zip包 下载成功后如下图 解压目录如图: 点击index.html进入d ...

  5. Static静态变量和非静态变量

    Static静态变量:   不同的对象共享这个变量的存储空间 而不是静态变量   每个对象具有可变的存储器空间 public class StaticDemo { private int count= ...

  6. Android获取Context(任意位置任意地方,全局上下文)

    一般获取context的方法 1.Activity.this的context (一般用法)返回当前activity的上下文,属于activity ,activity 摧毁他就摧毁 2.getAppli ...

  7. javascript对象属性为空的判断

    zepto: $.isEmptyObject = function(obj) { var name for (name in obj) return false return true } $.isE ...

  8. UVA 548(二进制重建和遍历)

    J - Tree Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Submit Status Ap ...

  9. Windows下静态编译Qt4

    既然是静态编译,那就要编译出来的程序不信赖于任何dll文件.首先下载qt-win-opensource-4.7.4-mingw.exe: http://get.qt.nokia.com/qt/sour ...

  10. Linux内核源代码情景分析-fork()

    父进程fork子进程: child = fork() fork经过系统调用.来到了sys_fork.具体过程请參考Linux内核源码情景分析-系统调用. asmlinkage int sys_fork ...