文档章节

DbUtils使用笔记

iborder
 iborder
发布于 2016/12/08 21:09
字数 477
阅读 212
收藏 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 是...

黑泽明军
2018/05/20
0
0
Apache Commons DbUtils 1.5 发布

DbUtils 可是难得更新一次啊,刚发布的 1.5 版本改进记录包括: Bug [DBUTILS-73] - .BasicRowProcessor.CaseInsensitiveHashMap uses default Locale for toLowerCase [DBUTILS-77] - "dro......

oschina
2012/07/22
4.3K
15
Apache Commons DbUtils 1.6 发布

Apache Commons DbUtils 1.6 发布,主要改进内容包括: ArrayHandler should return an empty array when handle has no rows Fixes DBUTILS-110. Order of columns not retained in BasicR......

oschina
2014/07/22
6.9K
15
Apache Commons-DbUtils 1.4 发布

dbutils 1.4 发布了,dbutils 并不是一个严格意义上的 ORM 框架,它提供了一些Jdbc的操作封装来简化数据查询和记录读取操作。本站使用的就是 dbutils 这个工具包来进行数据库存取。 新版本主...

红薯
2011/10/25
3.1K
0
DbUtils的网友评论

原则上这不能说是一个持久层框架,它提供了一些Jdbc的操作封装来简化数据查询和记录读取操作。本站就是采用这个项目来读写数据库,代码非常简洁,如果你厌烦了Hibernate的庞大,不妨可以试试...

红薯
2009/12/11
1K
12

没有更多内容

加载失败,请刷新页面

加载更多

Intellij IDEA中设置了jsp页面,但是在访问页面时却提示404

在Intellij IDEA中设置了spring boot的jsp页面,但是在访问时,却出现404,Not Found,经过查找资料后解决,步骤如下: 在Run/Debug Configurations面板中设置该程序的Working Directory选项...

uknow8692
25分钟前
0
0
day24:文档第五行增内容|每月1号压缩/etc/目录|过滤文本重复次数多的10个单词|人员分组|

1、在文本文档1.txt里第五行下面增加如下内容;两个方法; # This is a test file.# Test insert line into this file. 分析:给文档后增加内容,可以用sed 来搞定;也可以用while do done...

芬野de博客
31分钟前
0
0
深入理解JVM—JVM内存模型

深入理解JVM—JVM内存模型 我们知道,计算机CPU和内存的交互是最频繁的,内存是我们的高速缓存区,用户磁盘和CPU的交互,而CPU运转速度越来越快,磁盘远远跟不上CPU的读写速度,才设计了内存...

onedotdot
49分钟前
1
0
MVC、MVCS、MVVM、MVP、VIPER等这么多架构模式哪一个好呢?

在项目开启阶段,其中一个很重要的环节就是选架构。 那么面对目前已知的这么多架构模式我们该怎么选择呢?这确实是个很让人头疼的问题! 下面我就在这里梳理一下目前常见的一些架构模式。 先...

Java干货分享
今天
4
0
简单模仿配置文件的反射机制

//Student类 public class Student { public void love() { System.out.println("python"); } } //Tesy类 public class Tesy { public static void main(String[] args) throws Exceptio......

南桥北木
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部