文档章节

DbUtils使用笔记

iborder
 iborder
发布于 2016/12/08 21:09
字数 477
阅读 171
收藏 1

Apache Commons DbUtils 是 Apache 组织提供的一个开源 JDBC工具类库,它是对JDBC的简单封装,能极大简化JDBC编码的工作量,同时也不会影响程序的性能。

最新版本是Apache Commons DbUtils 1.6

测试实例

package cn.iborder.test;

import java.beans.PropertyVetoException;
import java.sql.SQLException;
import java.util.List;
import java.util.Random;

import javax.sql.DataSource;

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.ColumnListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;
import org.junit.Test;

import com.mchange.v2.c3p0.ComboPooledDataSource;

import cn.iborder.entity.Student;

public class Test3 {
	
	/**
	 * 数据源
	 * @return
	 */
	public DataSource createDataSource() {
		ComboPooledDataSource dataSource = new ComboPooledDataSource();
		try {
			dataSource.setDriverClass("com.mysql.jdbc.Driver");
			dataSource.setJdbcUrl("jdbc:mysql://localhost/test");
			dataSource.setUser("root");
			dataSource.setPassword("root");
			dataSource.setInitialPoolSize(3);
			dataSource.setMaxPoolSize(6);
			dataSource.setMaxIdleTime(1000);
		} catch (PropertyVetoException e) {
			// TODO: handle exception
			e.printStackTrace();
		}
		return dataSource;
	}
	
	@Test
	public void test1() {
		ComboPooledDataSource dataSource = (ComboPooledDataSource) createDataSource();
		try {
			QueryRunner run = new QueryRunner(dataSource);
			String sql = "update student set age= ? where userId = ?";
			//run.update(sql, new Random().nextInt(99)+1, 23);
			//run.update(sql, new Object[]{new Random().nextInt(99)+1, 23});
			//批量更新
			run.batch(sql, new Object[][]{{new Random().nextInt(99)+1, new Random().nextInt(29)+1},{new Random().nextInt(99)+1, new Random().nextInt(29)+1},{45,23},{12,7}});
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			dataSource.close();
		}
	}

	@Test
	public void test2() {
		ComboPooledDataSource dataSource = (ComboPooledDataSource) createDataSource();
		try {
			QueryRunner run = new QueryRunner(dataSource);
			String sql = "INSERT INTO student(userName,gender,age) VALUES(?,?,?)";
			//返回的结果集是Long类型
			long result = run.insert(sql, new ScalarHandler<Long>(), new Object[]{"张三", "m", 15});
			System.out.println(result);
			
			//批量插入
			List<Long> rs = run.insertBatch(sql, new ColumnListHandler<Long>(), new Object[][]{{"张杀死", "w", 33},{"张五", "a", 44},{"张六", "v", 55}});
			for (Long t : rs) {
				System.out.println(t);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			dataSource.close();
		}
	}
	
	@Test
	public void test3() {
		ComboPooledDataSource dataSource = (ComboPooledDataSource) createDataSource();
		try {			
			QueryRunner run = new QueryRunner(dataSource);
			String sql = "select * from student";
			//用于对结果集进行封装
			ResultSetHandler<List<Student>> rs = new BeanListHandler<Student>(Student.class);
			List<Student> result = run.query(sql, rs, 22);
			
			for (Student student : result) {
				System.out.println(student.getUserId());
			}
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			dataSource.close();
		}
	}
	
}

关于结果集

单行数据处理:ScalarHandler、ArrayHandler、MapHandler、BeanHandler

多行数据处理:BeanListHandler、AbstractListHandler(ArrayListHandler 、

MapListHandler、ColumnListHandler)、AbstractKeyedHandler(KeyedHandler、

BeanMapHandler)

可供扩展的类:BaseResultSetHandler

Dbutils使用结果集的方法有query、insert、insertBatch三个。insert()和update()方法都能执行插入记录的sql语句,但是返回值有区别。前者执行后返回的是表中的插入行生成的主键值,后者返回的是受语句影响的行数。

© 著作权归作者所有

共有 人打赏支持
iborder
粉丝 4
博文 73
码字总数 48998
作品 0
揭阳
程序员
day14_DBUtils学习笔记

一、DBUtils介绍 Apache公司开发的框架。   DBUtils是java编程中的数据库操作实用工具,小巧简单实用。   DBUtils封装了对JDBC的操作,简化了JDBC操作。可以少写代码。 commons-dbutils 是...

黑泽明军
05/20
0
0
修改DbUtils支持表名下划线映射(驼峰模式)

Commons DbUtils很一个很好用JDBC工具类,地球人都知道,就不介绍了,不知道的看这里:http://commons.apache.org/dbutils/ 在进行查询自动类映射的时候domain类的属性必须和数据库中名称一样...

Zero__One
2014/06/23
0
2
DbUtils源码阅读一:初识项目

1 项目介绍 DbUtils是一个关于JDBC操作的类库。官网地址 2 项目结构 org.apache.commons.dbutils: |-AbstractQueryRunner: 抽象类 |-AsyncQueryRunner |-QueryRunner |-QueryLoader |-Proxy......

吴下阿吉
2013/02/23
0
2
Commons DbUtils

1 概述 Commons DBUtils类库是小型的设计于易于使用JDBC的类集合。JDBC资源清理是平凡的,容易出错,以至于这些类从你的代码中抽象出清理代码,剩下你最初真正想要使用JDBC做的代码:查询和更...

Leech
2015/07/21
0
0
使用元数据+反射优化CURD操作+DBUtils

元数据的使用 1)想取得对数据库相关信息的描述,可以元数据 2)DatabaseMetaData/DatabaseMetaData dbmd = conn.getMetaData() 3)ParameterMetaData/ParameterMetaData psmd = pstmt.getPara......

chenruibing
2015/06/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

你为什么在Redis里读到了本应过期的数据

一个事故的故事 晚上睡的正香突然被电话吵醒,对面是开发焦急的声音:我们的程序在访问redis的时候读到了本应过期的key导致整个业务逻辑出了问题,需要马上解决。 看到这里你可能会想:这是不...

IT--小哥
今天
2
0
祝大家节日快乐,阖家幸福! centos GnuTLS 漏洞

yum update -y gnutls 修复了GnuTLS 漏洞。更新到最新 gnutls.x86_64 0:2.12.23-22.el6 版本

yizhichao
昨天
5
0
Scrapy 1.5.0之选择器

构造选择器 Scrapy选择器是通过文本(Text)或 TextResponse 对象构造的 Selector 类的实例。 它根据输入类型自动选择最佳的解析规则(XML vs HTML): >>> from scrapy.selector import Sele...

Eappo_Geng
昨天
4
0
Windows下Git多账号配置,同一电脑多个ssh-key的管理

Windows下Git多账号配置,同一电脑多个ssh-key的管理   这一篇文章是对上一篇文章《Git-TortoiseGit完整配置流程》的拓展,所以需要对上一篇文章有所了解,当然直接往下看也可以,其中也有...

morpheusWB
昨天
5
0
中秋快乐!!!

HiBlock
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部