DBUtils例子_增删改查询

1 DBUtils概述

DBUtils是java编程中的数据库操作实用工具,小巧简单实用。
DBUtils封装了对JDBC的操作,简化了JDBC操作,可以少写代码。
Dbutils三个核心功能介绍
 QueryRunner中提供对sql语句操作的API.
 ResultSetHandler接口,用于定义select操作后,怎样封装结果集.
 DbUtils类,它就是一个工具类,定义了关闭资源与事务处理的方法
关于关闭连接:
在创建QueryRunner时传入dataSource对象每次在执行完之后都会自动关闭Connection连接对象所以再也不用担心没有关闭对象而导致的问题了
如果没有传入dataSource的话 需要手动关闭连接。

2 核心类说明

2.1 QueryRunner类

QueryRunner(DataSource ds
提供数据源(连接池),DBUtils底层自动维护连接connection
update(String sql):
     执行无参数的插入、更新或删除(DML)操作。
update(String sql, Object params[]):
     执行带参数的插入、更新或删除(DML)操作。
query(String sql, ResultSetHandler rsh):
     执行无需参数的选择查询,结果放入rsh中。
query(String sql, Object params, ResultSetHandler rsh):
  执行选择查询,在查询中,对象阵列的值被用来作为查询的置换参数。

2 ResultSetHandler类(结果集处理类)

ArrayHandler	将结果集中的第一条记录封装到一个Object[]数组中,数组中的每一个元素就是这条记录中的每一个字段的值
ArrayListHandler	将结果集中的每一条记录都封装到一个Object[]数组中,将这些数组在封装到List集合中。
BeanHandler	将结果集中第一条记录封装到一个指定的javaBean中。
BeanListHandler	将结果集中每一条记录封装到指定的javaBean中,将这些javaBean在封装到List集合中
ColumnListHandler	将结果集中指定的列的字段值,封装到一个List集合中
KeyedHandler	将结果集中每一条记录封装到Map<String,Object>,在将这个map集合做为另一个Map的value,另一个Map集合的key是指定的字段的值。
MapHandler	将结果集中第一条记录封装到了Map<String,Object>集合中,key就是字段名称,value就是字段值

MapListHandler	将结果集中每一条记录封装到了Map<String,Object>集合中,key就是字段名称,value就是字段值,在将这些Map封装到List集合中。
ScalarHandler	它是用于单个数据。例如select count(*) from 表操作。

例子:
1:显示所有的dept:部门id,部门名称,
2:显示所有的emp:员工id,员工姓名,员工所在部门名称。

注意:使用DBUtils之前,需要导入5个包:

包

package cn.njit.DBUtils;

import java.io.Serializable;

public class Dept implements Serializable{
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private String deptno;
	private String dname;
	private String loc;
	public String getDeptno() {
		return deptno;
	}
	public void setDeptno(String deptno) {
		this.deptno = deptno;
	}
	public String getDname() {
		return dname;
	}
	public void setDname(String dname) {
		this.dname = dname;
	}
	public String getLoc() {
		return loc;
	}
	public void setLoc(String loc) {
		this.loc = loc;
	}
	public String toString() {
		return deptno+"-"+dname;
	}
	
	
}
-------------------------------------------------------------------------------------------
  package cn.njit.DBUtils;
    
import java.sql.SQLException;
import java.util.Arrays;
import java.util.List;

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.ArrayListHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;

import util.C3P0Utils;

public class DBUtilsDemo_2 {

	public static void main(String[] args) {
		testdeptQueryAll();

	}

	static void testdeptQueryAll() {
		QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
		System.out.println("--------BeanListHandler---------");
		BeanListHandler<Dept> blhl = new BeanListHandler<Dept>(Dept.class);
		String sql = "select * from dept";

		try {
			List<Dept> list = qr.query(sql, blhl);
			System.out.println("部门id" + "\t" + "部门名称");
			for (Dept d : list) {
				System.out.println(d.getDeptno() + "\t" + d.getDname());
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		//----返回一个集合,ArrayListHandler
		System.out.println("-------ArrayListHandler--------");
		sql="select emp.*,dept.dname from emp,dept where emp.deptno=dept.deptno";
		ArrayListHandler ahs=new ArrayListHandler();
		try {
			List<Object[]> list=qr.query(sql, ahs);
			for(Object[] o:list) {
				System.out.println(Arrays.toString(o));
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}	
	}  
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/AirTrioa/article/details/83116636