博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DbUtils使用笔记
阅读量:7027 次
发布时间:2019-06-28

本文共 3555 字,大约阅读时间需要 11 分钟。

hot3.png

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

最新版本是

测试实例

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
(), new Object[]{"张三", "m", 15}); System.out.println(result); //批量插入 List
rs = run.insertBatch(sql, new ColumnListHandler
(), 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
> rs = new BeanListHandler
(Student.class); List
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语句,但是返回值有区别。前者执行后返回的是表中的插入行生成的主键值,后者返回的是受语句影响的行数。

转载于:https://my.oschina.net/u/2321708/blog/802595

你可能感兴趣的文章
web -- Angularjs 备忘录应用
查看>>
sklearn学习笔记
查看>>
SQL Server 数据分页查询
查看>>
python之路day06-python2/3小区别,小数据池的概念,编码的进阶str转为bytes类型,编码和解码...
查看>>
angularjs 指令(directive)详解(2)
查看>>
2015-2016 ACM-ICPC, NEERC, Southern Subregional Contest J Cleaner Robot
查看>>
leapMotion简介
查看>>
增量更新项目时的备份MyBak
查看>>
图灵成立七周年——经典回顾
查看>>
iOS常用的设计模式
查看>>
[十二省联考2019]春节十二响
查看>>
HL AsySocket 服务开发框架 - 总体思路与架构
查看>>
安全原理
查看>>
web前端中的一些注释表达法
查看>>
Kotlin学习与实践 (八)集合的函数式 lambda API
查看>>
Kotlin学习与实践 (三)fun 函数
查看>>
[原]Unity3D深入浅出 - 脚本开发基础(Scripts)
查看>>
HTTP Error 503. The service is unavailable
查看>>
常用的排序、查找算法的时间复杂度和空间复杂度
查看>>
Android 检测SD卡状态
查看>>