<dependency>
<groupId>commons-dbutils</groupId>
<artifactId>commons-dbutils</artifactId>
<version>1.7</version>
</dependency>

 

package jachs.commons.dbutils.examples;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Properties; import org.apache.commons.dbcp2.BasicDataSource;
import org.apache.commons.dbcp2.BasicDataSourceFactory;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.ResultSetHandler;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.BeanMapHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;
import org.junit.Before;
import org.junit.Test; import jachs.commons.dbcp.BasicDataSourceDemo; /****
* 文档http://commons.apache.org/proper/commons-dbutils/apidocs/index.html
* 示例http://commons.apache.org/proper/commons-dbutils/examples.html
*
* @author zhanchaohan
*
*/
public class Demo {
private BasicDataSource bds = new BasicDataSource(); @Before
public void init() throws Exception {
Properties properties = new Properties();
properties.load(BasicDataSourceDemo.class.getResourceAsStream("config.properties"));
BasicDataSourceFactory bdsf = new BasicDataSourceFactory();
bds = bdsf.createDataSource(properties);
} @Test
public void insert() throws SQLException {
// QueryRunner run = new QueryRunner();
QueryRunner run = new QueryRunner(bds, true);// 使用的QueryRunner的构造函数。
ScalarHandler scalarHandler = new ScalarHandler();
run.insert("insert into test value('lks',15,'日本')", scalarHandler);
run.insert("insert into test value(?,?,?)", scalarHandler, "zhangsan", 20, "南京");
} @Test
public void delete() throws SQLException {
QueryRunner run = new QueryRunner(bds, true);
// int index=run.execute("delete from test where name=? or name=?", "zhangsan","lks");
int count = run.execute("delete from test where name='zhangsan' or name='lks'");
System.out.println(count);
} @Test
public void update() throws SQLException {
QueryRunner run = new QueryRunner(bds, true);
// int count=run.update("update test set name='lisi' where name='lks'");
int count = run.update("update test set name=? where name=?", "lisi", "lks");
System.out.println(count);
} /****
* 查询 1. ResultSetHandler 的作用: QueryRunner 的 query 方法的返回值最终取决于 query 方法的
* ResultHandler 参数的 hanlde 方法的返回值。 2. BeanListHandler: 把结果集转为一个 Bean 的 List,
* 并返回.。Bean的类型在创建 BeanListHanlder对象时以 Class对象的方式传入,可以适应列的别名来映射 JavaBean 的属性 名:
* String sql = "SELECT id, name customerName, email, birth " + "FROM customers
* WHERE id = ?"; BeanListHandler(Class<T> type)。 3. BeanHandler: 把结果集转为一个
* Bean,并返回.。Bean的类型在创建BeanHandler 对象时以 Class 对象的方式传入 BeanHandler(Class<T>
* type)。 4. MapHandler: 把结果集转为一个 Map 对象, 并返回。若结果集中有多条记录, 仅返回
* 第一条记录对应的Map对象.。Map的键: 列名(而非列的别名), 值: 列的值。 5. MapListHandler: 把结果集转为一个 Map
* 对象的集合, 并返回.。Map的键: 列名(而非列的别名), 值: 列的值。 6. ScalarHandler:
* 可以返回指定列的一个值或返回一个统计函数的值,比如count(1)。
*
* @throws SQLException
*/
@Test
public void query() throws SQLException {
ResultSetHandler<List<List<Object>>> rsh = new ResultSetHandler<List<List<Object>>>() {
@Override
public List<List<Object>> handle(ResultSet rs) throws SQLException {
List<List<Object>> data = new ArrayList<List<Object>>();
while (rs.next()) {
List<Object> obj = new ArrayList<Object>();
obj.add(rs.getObject(1));
obj.add(rs.getObject(2));
obj.add(rs.getObject(3));
data.add(obj);
}
return data;
}
};
QueryRunner run = new QueryRunner(bds, true);
String sql = "select * from test where name='lisi' or name='zhangsan' or name='张三'";
List<List<Object>> ls = run.query(sql, rsh);
for (List<Object> list : ls) {
System.out.println(list.get(0) + "\t" + list.get(1) + "\t" + list.get(2));
}
} @Test
public void query1() throws SQLException {
// QueryRunner run = new QueryRunner(bds, true);
// BeanHandler bh = new BeanHandler<test>(test.class);
// String sql = "select * from test where name=?";
// test tsArr = run.query(sql, "lisi", bh);
// System.out.println(tsArr.getName() + "\t" + tsArr.getAge() + "\t" + tsArr.getArea()); // 提供了一个自定义接口RowProcessor,要自己实现
// MyRowProcessor mrp = new MyRowProcessor();
// 多条
QueryRunner run = new QueryRunner(bds, true);
ResultSetHandler<Map<String, test>> h = new BeanMapHandler<String, test>(test.class, "name");
String sql = "select * from test where name=? or name=? or name=?";
Map<String, test> tsArr = run.query(sql, new String[] { "lisi", "zhangsan", "张三" }, h);
for (String key : tsArr.keySet()) {
System.out.println(key);
System.out.println(tsArr.get(key).getName()+"\t"+tsArr.get(key).getAge()+"\t"+tsArr.get(key).getAge());
System.out.println("-----------------------------------------");
}
}
}

  

Commons-DbUtils的更多相关文章

  1. 高性能jdbc封装工具 Apache Commons DbUtils 1.6(转载)

    转载自原文地址:http://gao-xianglong.iteye.com/blog/2166444 前言 关于Apache的DbUtils中间件或许了解的人并不多,大部分开发人员在生成环境中更多的 ...

  2. Apache Commons DbUtils 快速上手

    原文出处:http://lavasoft.blog.51cto.com/62575/222771 Hibernate太复杂,iBatis不好用,JDBC代码太垃圾,DBUtils在简单与优美之间取得了 ...

  3. 写一个ORM框架的第一步(Apache Commons DbUtils)

    新一次的内部提升开始了,如果您想写一个框架从Apache Commons DbUtils开始学习是一种不错的选择,我们先学习应用这个小“框架”再把源代码理解,然后写一个属于自己的ORM框架不是梦. 一 ...

  4. java JDBC (七) org.apache.commons.dbutils 查询

    package cn.sasa.demo1; import java.sql.Connection; import java.sql.SQLException; import java.util.Li ...

  5. java JDBC (六) org.apache.commons.dbutils 增删改

    dbutils是apache封装了JDBC的工具类,比mysql-connector更方便些 下载地址:http://commons.apache.org/proper/commons-dbutils ...

  6. Java连接数据库 #04# Apache Commons DbUtils

    索引 通过一个简单的调用看整体结构 Examples 修改JAVA连接数据库#03#中的代码 DbUtils并非是什么ORM框架,只是对原始的JDBC进行了一些封装,以便我们少写一些重复代码.就“用” ...

  7. 《笔者带你剖析Apache Commons DbUtils 1.6》(转)

    前言 关于Apache的DbUtils中间件或许了解的人并不多,大部分开发人员在生成环境中更 多的是依靠Hibernate.Ibatis.Spring JDBC.JPA等大厂提供的持久层技术解决方案, ...

  8. commons.dbutils 的使用列子

    c0p3的导入请参考前文 https://www.cnblogs.com/appium/p/10183016.html JdbcUtils: package cn.itcast.jdbc; impor ...

  9. java.lang.ClassNotFoundException: org.apache.commons.dbutils.QueryRunner

    七月 28, 2017 11:06:33 下午 org.apache.catalina.core.StandardWrapperValve invoke严重: Servlet.service() fo ...

  10. 模拟apache commons dbutils 实现自己的BeanListHandler(回调应用)

    首先dbcp相关的jar包和MySQL的驱动包导入到项目中. dbcp.properties配置文件如下,并放到项目根目录下. driverClassName=com.mysql.jdbc.Drive ...

随机推荐

  1. 【Android Studio安装部署系列】三十三、windows系统中通过SourceTree使用git

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 前期准备 选择代码托管服务器:gitlab.github.开源中国等. 注册账号 创建项目 安装git 参考<[Android ...

  2. 总结http get和post的区别

    这个问题几乎面试的时候都会问到,是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎. 什么是http? get.post常见的区别 ge ...

  3. [翻译] 对正在使用EF6x开发人员的一些话

    Entity Framework Core in Action Entityframework Core in action是 Jon P smith 所著的关于Entityframework Cor ...

  4. 机器学习之logistic回归算法与代码实现原理

    Logistic回归算法原理与代码实现 本文系作者原创,转载请注明出处:https://www.cnblogs.com/further-further-further/p/10033567.html ...

  5. kubernetes系列08—service资源详解

    本文收录在容器技术学习系列文章总目录 1.认识service 1.1 为什么要使用service Kubernetes Pod 是有生命周期的,它们可以被创建,也可以被销毁,然而一旦被销毁生命就永远结 ...

  6. [JavaScript] 函数节流(throttle)和函数防抖(debounce)

    js 的函数节流(throttle)和函数防抖(debounce)概述 函数防抖(debounce) 一个事件频繁触发,但是我们不想让他触发的这么频繁,于是我们就设置一个定时器让这个事件在 xxx 秒 ...

  7. C# Net MVC 大文件下载几种方式、支持速度限制、资源占用小

    上一篇我们说到大文件的分片下载.断点续传.秒传,有的博友就想看分片下载,我们也来总结一下下载的几种方式,写的比较片面,大家见谅^_^. 下载方式: 1.html超链接下载: 2.后台下载(四种方法:返 ...

  8. Java使用Aspose组件进行多文档间的转换操作

    首先,祝大家新年快乐,2019诸事顺利,很久没有更新博客,今天要给大家说的是 ”Aspose“ 组件,作为2019年第一篇博客,希望大家能够多多支持,2019年要继续加油. 什么是Aspose? As ...

  9. Java集合类源码解析:Vector

    [学习笔记]转载 Java集合类源码解析:Vector   引言 之前的文章我们学习了一个集合类 ArrayList,今天讲它的一个兄弟 Vector.为什么说是它兄弟呢?因为从容器的构造来说,Vec ...

  10. h5与c3权威指南笔记--css3新属性选择器

    [att*=val] 选择所有att属性值中包含val的.只要包含val值,不论val值在属性值的前面还是中间还是后面~ <style> div[class*=div]{ color: r ...