1.c3p0-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config> <named-config name="helloc3p0"> <!-- 指定连接数据源的基本属性 -->
<property name="user">root</property>
<property name="password"></property>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql:///filter</property> <!-- 若数据库中连接数不足时, 一次向数据库服务器申请多少个连接 -->
<property name="acquireIncrement"></property>
<!-- 初始化数据库连接池时连接的数量 -->
<property name="initialPoolSize"></property>
<!-- 数据库连接池中的最小的数据库连接数 -->
<property name="minPoolSize"></property>
<!-- 数据库连接池中的最大的数据库连接数 -->
<property name="maxPoolSize"></property> <!-- C3P0 数据库连接池可以维护的 Statement 的个数 -->
<property name="maxStatements"></property>
<!-- 每个连接同时可以使用的 Statement 对象的个数 -->
<property name="maxStatementsPerConnection"></property> </named-config> </c3p0-config>

2.test

package com.pers.test;/**
* Created by hoobey on 2017/11/18.
*/ import org.apache.commons.dbutils.QueryLoader;
import org.junit.Test; import java.io.IOException;
import java.util.Map; /**
* All rights Reserved, Designed By www.hoobey.cn
*
* @Description: 测试用例(用一句话描述该文件做什么)
* Create by hoobey
* User:user
* Date:2017/11/18
* Time:下午 04:51
* 注意:本内容仅限于本公司内部传阅,禁止外泄以及用于其他的商业目的
*/
public class test {
/**
* QueryLoader: 可以用来加载存放着 SQL 语句的资源文件.
* 使用该类可以把 SQL 语句外置化到一个资源文件中. 以提供更好的解耦
*
* @throws IOException
*/
@Test
public void testQueryLoader() throws IOException {
// / 代表类路径的根目录.
Map<String, String> sqls = QueryLoader.instance().load("/sql.properties"); String updateSql = sqls.get("UPDATE_CUSTOMER");
//UPDATE_CUSTOMER=UPDATE customer SET name = ? WHERE id = ?
System.out.println(updateSql);
}
}

3.Del.java

package com.pers.test;/**
* Created by hoobey on 2017/11/18.
*/ import com.pers.util.JdbcTools;
import org.apache.commons.dbutils.QueryRunner;
import org.junit.Test; import java.sql.Connection; /**
* All rights Reserved, Designed By www.hoobey.cn
*
* @Description: (用一句话描述该文件做什么)
* Create by hoobey
* User:user
* Date:2017/11/18
* Time:下午 05:04
* 注意:本内容仅限于本公司内部传阅,禁止外泄以及用于其他的商业目的
*/
public class Del {
/**
* 测试 QueryRunner 类的 update 方法
* 该方法可用于 INSERT, UPDATE 和 DELETE
*/
@Test
public void testQueryRunnerUpdate() {
//1. 创建 QueryRunner 的实现类
QueryRunner queryRunner = new QueryRunner(); String sql = "DELETE FROM customer " +
"WHERE id IN (?,?)"; Connection connection = null; try {
connection = JdbcTools.getConnection();
//2. 使用其 update 方法
int update = queryRunner.update(connection,
sql, , );
System.out.println("update:" + update);
} catch (Exception e) {
e.printStackTrace();
} finally {
JdbcTools.releaseDB(null, null, connection);
} }
}

4.query.java

package com.pers.test;/**
* Created by hoobey on 2017/11/18.
*/ import com.pers.domain.Customer;
import com.pers.util.JdbcTools;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.ResultSetHandler;
import org.apache.commons.dbutils.handlers.*;
import org.junit.Test; import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map; /**
* All rights Reserved, Designed By www.hoobey.cn
*
* @Description: 通过QueryRunner实现增删改查(用一句话描述该文件做什么)
* Create by hoobey
* User:user
* Date:2017/11/18
* Time:下午 04:59
* 注意:本内容仅限于本公司内部传阅,禁止外泄以及用于其他的商业目的
*/
public class Query {
/**
* 测试 QueryRunner 的 query 方法
*/
@SuppressWarnings({"unchecked", "rawtypes"})
@Test
public void testResultSetHandler() {
String sql = "SELECT id, name, email, birth from customer"; //1. 创建 QueryRunner 对象
QueryRunner queryRunner = new QueryRunner(); Connection conn = null; try {
conn = JdbcTools.getConnection();
/**
* 2. 调用 query 方法:
* ResultSetHandler 参数的作用: query 方法的返回值直接取决于
* ResultSetHandler 的 hanlde(ResultSet rs) 是如何实现的. 实际上, 在
* QueryRunner 类的 query 方法中也是调用了 ResultSetHandler 的 handle()
* 方法作为返回值的。
*/
Object object = queryRunner.query(conn, sql,
new ResultSetHandler() {
@Override
public Object handle(ResultSet rs) throws SQLException {
List<Customer> customers = new ArrayList<>(); while (rs.next()) {
int id = rs.getInt();
String name = rs.getString();
String email = rs.getString();
Date birth = rs.getDate(); System.out.println(id + "," + name + "," + email + "," + birth);
Customer customer =
new Customer(id, name, email, birth);
customers.add(customer);
} return customers;
}
} );
/*
0,hello,hu@qq.com,2017-11-16
1,hubin,122@qq.com,2017-10-18
2,xiaomi,77@163.com,2017-08-15
[Customer{id=0, name='hello', email='hu@qq.com', birth=2017-11-16}, Customer{id=1, name='hubin', email='122@qq.com', birth=2017-10-18},
Customer{id=2, name='xiaomi', email='77@163.com', birth=2017-08-15}]
*/
System.out.println(object);
} catch (Exception e) {
e.printStackTrace();
} finally {
JdbcTools.releaseDB(null, null, conn);
}
} /**
* 测试 ResultSetHandler 的 BeanListHandler 实现类
* BeanListHandler: 把结果集转为一个 Bean 的 List. 该 Bean
* 的类型在创建 BeanListHandler 对象时传入:
* <p>
* new BeanListHandler<>(Customer.class)
*/
@Test
public void testBeanListHandler() {
String sql = "SELECT id, name, email, birth FROM customer"; //1. 创建 QueryRunner 对象
QueryRunner queryRunner = new QueryRunner(); Connection conn = null; try {
conn = JdbcTools.getConnection(); Object object = queryRunner.query(conn, sql, new BeanListHandler<>(Customer.class));
//[Customer{id=0, name='hello', email='hu@qq.com', birth=2017-11-16}, Customer{id=1, name='hubin', email='122@qq.com',
// birth=2017-10-18}, Customer{id=2, name='xiaomi', email='77@163.com', birth=2017-08-15}]
System.out.println(object); ArrayList<Customer> customers = (ArrayList<Customer>) object;
for (int i = ; i < customers.size(); i++) {
Customer customer = customers.get(i);
System.out.println(customer.getName());//hello hubin xiaomi
} } catch (Exception e) {
e.printStackTrace();
} finally {
JdbcTools.releaseDB(null, null, conn);
}
} /**
* BeanHandler: 把结果集的第一条记录转为创建 BeanHandler 对象时传入的 Class 参数对应的对象.
*/ @Test
public void testBeanHanlder() {
QueryRunner queryRunner = new QueryRunner();
Connection connection = null; try {
connection = JdbcTools.getConnection();
String sql = "SELECT id, name, email, birth FROM customer WHERE name = ?"; Customer customer = (Customer)queryRunner.query(connection, sql, new BeanHandler(Customer.class),"hello"); System.out.println(customer.toString());//Customer{id=0, name='hello', email='hu@qq.com', birth=2017-11-16}
} catch (Exception e) {
e.printStackTrace();
} finally {
JdbcTools.releaseDB(null,null,connection);
}
} /*
4、通过MapHandler、MapListHandler实现查询操作
*/
@Test
public void testMapHandler() {
Connection connection = null;
QueryRunner queryRunner = new QueryRunner(); String sql = "SELECT id, name, email, birth FROM customer WHERE id = ?"; try {
connection = JdbcTools.getConnection();
Map<String, Object> map = (Map<String, Object>)queryRunner.query(connection, sql, new MapHandler(), ); System.out.println(map);//{name=xiaomi, birth=2017-08-15, id=2, email=77@163.com}
} catch (Exception e) {
e.printStackTrace();
} finally {
JdbcTools.releaseDB(null, null, connection);
}
} @Test
public void testMapListHandler() {
Connection connection = null;
QueryRunner queryRunner = new QueryRunner(); String sql = "SELECT id, name, email, birth " +
"FROM customer"; try {
connection = JdbcTools.getConnection();
List<Map<String, Object>> mapList = queryRunner.query(connection, sql, new MapListHandler());
System.out.println(mapList);
/*
[{name=hello, birth=2017-11-16, id=0, email=hu@qq.com}, {name=hubin, birth=2017-10-18, id=1, email=122@qq.com}, {name=xiaomi,birth=2017-08-15, id=2, email=77@163.com}] */
} catch (Exception e) {
e.printStackTrace();
} finally {
JdbcTools.releaseDB(null, null, connection);
}
} /*
5、通过ScalarHandler实现查询操作
*/
@Test
public void testScalarHandler() {
Connection connection = null;
QueryRunner queryRunner = new QueryRunner();
String sql = "SELECT name FROM customer WHERE id = ?";
try {
connection = JdbcTools.getConnection();
Object count = queryRunner.query(connection, sql,new ScalarHandler(), );
System.out.println(count);//xiao 查看的是id=2的顾客姓名
} catch (Exception e) {
e.printStackTrace();
} finally {
JdbcTools.releaseDB(null, null, connection);
}
}
//6、通过ArrayHandler\ArrayListHandler实现查询操作
/*
* 结果集第二种处理方法,ArrayListHandler
* 将结果集的每一行,封装到对象数组中, 出现很多对象数组
* 对象数组存储到List集合
*/
public static void arrayListHandler() throws Exception {
Connection con = JdbcTools.getConnection();
QueryRunner qr = new QueryRunner();
String sql = "SELECT * FROM customer";
//调用query方法,结果集处理的参数上,传递实现类ArrayListHandler
//方法返回值 每行是一个对象数组,存储到List
List<Object[]> result = qr.query(con, sql, new ArrayListHandler()); //集合的遍历
for (Object[] objs : result) {
//遍历对象数组
for (Object obj : objs) {
System.out.print(obj + " ");
}
System.out.println();
/*
0 hello hu@qq.com 2017-11-16
1 hubin 122@qq.com 2017-10-18
2 xiaomi 77@163.com 2017-08-15
*/
}
} /* * 结果集第一种处理方法, ArrayHandler
* 将结果集的第一行存储到对象数组中 Object[]
*/
public static void arrayHandler() throws Exception {
Connection con = JdbcTools.getConnection();
QueryRunner qr = new QueryRunner();
String sql = "SELECT * FROM customer";
//调用方法query执行查询,传递连接对象,SQL语句,结果集处理方式的实现类
//返回对象数组
Object[] result = qr.query(con, sql, new ArrayHandler());
for (Object obj : result) {
System.out.print(obj+"\t");//0 hello hu@qq.com 2017-11-16
}
}
public static void main(String[] args) throws Exception {
// new Query().arrayHandler();
new Query().arrayListHandler();
} }

QueryRunner实战(query_update)、BeanList\BeanHandler、MapList\MapHandler、ScalarHandler的更多相关文章

  1. dbutils使用---QueryRunner、BeanListHandler、BeanHandler、MapListHandler、MapHandler、ScalarHandler

    1. ResultSetHandler 的作用: QueryRunner 的 query 方法的返回值最终取决于 query 方法的 ResultHandler 参数的 hanlde 方法的返回值. ...

  2. 5_项目实战MyShop

    一. 网上商城 1.1 商城类别 B2B 商家对商家 B2C 商家对客户 C2C 客户对客户 O2O 线上线下相结合 1.2 商城常见模块 后台常见功能模块 商品管理 包括后台商品库存管理, 上货, ...

  3. QueryRunner使用

    在相继学习了JDBC和数据库操作之后,我们明显感到编写JDBC代码并非一件轻松的事儿.为了帮助我们更高效的学习工作,从JDBC的繁重代码中解脱出来,老佟给我们详尽介绍了一个简化JDBC操作的组件——D ...

  4. QueryRunner的使用

    在相继学习了JDBC和数据库操作之后,我们明显感到编写JDBC代码并非一件轻松的事儿.为了帮助我们更高效的学习工作,从JDBC的繁重代码中解脱出来,老佟给我们详尽介绍了一个简化JDBC操作的组件——D ...

  5. QueryRunner类的八种结果处理集

    package cn.jy.demo; import java.sql.Connection; import java.sql.SQLException; import java.util.List; ...

  6. Java基础-DButils工具类(QueryRunner)详解

    Java基础-DButils工具类(QueryRunner)详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 如果只使用JDBC进行开发,我们会发现冗余代码过多,为了简化JDBC ...

  7. QueryRunner 结果处理器

    package cn.itcast.dbutil; import java.sql.SQLException; import java.util.List; import java.util.Map; ...

  8. QueryRunner

    在相继学习了JDBC和数据库操作之后,我们明显感到编写JDBC代码并非一件轻松的事儿.为了帮助我们更高效的学习工作,从JDBC的繁重代码中解脱出来,xx给我们详尽介绍了一个简化JDBC操作的组件——D ...

  9. 【转载】JavaWeb之DBUtils QueryRunner类对数据表的增、删、查(8种结果集处理方式)、改操作

    一.使用QueryRunner类,实现对数据表的 insert delete update package com.shuhuadream.queryrunner; import java.sql.C ...

随机推荐

  1. IntelliJ IDEA像Eclipse一样打开多个项目(转)

    转自: 海涛zht666   IntelliJ IDEA像Eclipse一样打开多个项目 我们做项目实际中经常会遇到这样的情况,创建一个common项目(Maven项目)作为公用项目,common中有 ...

  2. python 全栈开发,Day134(爬虫系列之第1章-requests模块)

    一.爬虫系列之第1章-requests模块 爬虫简介 概述 近年来,随着网络应用的逐渐扩展和深入,如何高效的获取网上数据成为了无数公司和个人的追求,在大数据时代,谁掌握了更多的数据,谁就可以获得更高的 ...

  3. python 全栈开发,Day91(Vue实例的生命周期,组件间通信之中央事件总线bus,Vue Router,vue-cli 工具)

    昨日内容回顾 0. 组件注意事项!!! data属性必须是一个函数! 1. 注册全局组件 Vue.component('组件名',{ template: `` }) var app = new Vue ...

  4. spring-boot集成spring-data-jpa

    参考这个就行, http://blog.csdn.net/wazz753/article/details/72472411 ps:集成过程中pom文件,我加入的内容如下,两个都需要,实体类记得加注解和 ...

  5. day17--JQuery实例

        1.表格选择框--全选,反选,取消 <!DOCTYPE html> <html lang="en"> <head> <meta c ...

  6. 010 处理模型数据(ModelAndView,Map Model,@SessionAttributes)

    1.处理数据模型 SpringMVC提供了几种途径出书模型数据 二:ModelAndView 1.介绍 2.index <%@ page language="java" co ...

  7. 071 HBase的安装部署以及简单使用

    一:下载安装 1.下载安装 2.开启hadoop与zookeeper 3.修改配置文件hbase-env export JAVA_HOME=/opt/modules/jdk1.7.0_67 expor ...

  8. python网络编程基础(线程与进程、并行与并发、同步与异步、阻塞与非阻塞、CPU密集型与IO密集型)

    python网络编程基础(线程与进程.并行与并发.同步与异步.阻塞与非阻塞.CPU密集型与IO密集型) 目录 线程与进程 并行与并发 同步与异步 阻塞与非阻塞 CPU密集型与IO密集型 线程与进程 进 ...

  9. SystemTap - 安装

    按照SystemTap Beginners Guide的Installation and Setup部分安装了SystemTap,没想到竟然还有点曲折,在这里纪录一下. 环境 Linux发行版本:Ce ...

  10. [漏洞分析]thinkphp 5.x全版本任意代码执行分析全记录

    0x00 简介 2018年12月10日中午,thinkphp官方公众号发布了一个更新通知,包含了一个5.x系列所有版本存在被getshell的高风险漏洞. 吃完饭回来看到这个公告都傻眼了,整个tp5系 ...