Dbutils工具类使用

Dbutils工具类使用

Dbutils工具类是java编程中的数据库操作实用工具,封装了对JDBC的操作,简化了JDBC操作

Dbutils有三个核心类
  1. DbUtils
  2. QueryRunner
  3. ResultSetHandle
这里使用c3p0配合Dbutils工具类

关于c3p0的配置,jar包等请看这里

所需jar包

commons-dbutils-1.7.jar
链接:https://pan.baidu.com/s/13zUT2b2Uj1C1B-1-p2XFhQ
提取码:gtq7

开始
  1. 完成c3p0配置,导入上述jar包。

  2. 新建JSBCUtil.java工具类,创建一个与数据库关联的queryRunner对象,后期再操作数据库的时候,不需要Connection对象,自动管理事务。参数是:数据库连接池对象。

    QueryRunner queryRunner = new QueryRunner(C3p0Utils.getDataSource());
    
  3. 查询整个列表

    public static <T> List<T> query(String sql,Class<T> clz){
    	List<T> list = null;
    	try {
    		//sql是传入的sql语句
    		//BeanListHandler : 返回List,每行是Bean
    		//clz是返回list中的类型
    		list = queryRunner.query(sql, new BeanListHandler(clz));
    	} catch (SQLException e) {
    		e.printStackTrace();
    	}
    	return list;
    }
    

    test

    public void testQuery(){
    	String sql = "select * from users";
    	List<User> list = JDBCUtil.query(sql, User.class);
    	System.out.println(list);
    }
    
  4. 查询某条数据

    public static <T>T query(String sql,int id,Class<T> clz){
    	T nt = null;
    	try {
    		//sql是传入的sql语句
    		//id是要查询的数据
    		//BeanHandler -- 返回第一个Bean对象
    		//clz是返回的类型
    		nt = (T)queryRunner.query(sql, id,new BeanHandler(clz));
    	} catch (SQLException e) {
    		e.printStackTrace();
    	}
    	return nt;
    }
    
    1. 增删改
    public static boolean update(String sql,Map<String,String> map){
    	//参数中传入sql,map中存的是sql语句中的?(这里看不懂的话,下面test中有案例)
    	String[] arr = new String[map.size()];
    	//将map转换为数组
    	map.values().toArray(arr);
    	try {
    		int rows = queryRunner.update(sql,arr);
    		if(rows>0)
    			return true;
    	} catch (SQLException e) {
    		e.printStackTrace();
    	}
    	return false;
    }
    

    test

    public void testUpdate(){
    	String sql = "update users set uname=?,upassword=? where uid=?";
    //LinkedHashMap是有序的map,添加顺序与遍历顺序一致
    	Map<String, String> map = new LinkedHashMap<String,String>();
    	map.put("uname", "zjj");
    	map.put("upassword", "zjjjj");
    	map.put("uid", "11");
    	JDBCUtil.update(sql, map);
    }
    
补充

其中query方法中RequestSetHandler 参数对应的返回类型:

AbstractListHandler:返回多行List的抽象类

ArrayHandler:返回一行的Object[]

ArrayListHandler:返回List,每行是Object[]

BeanHandler:返回第一个Bean对象

BeanListHandler:返回List,每行是Bean

ColumnListHandler:返回一列的List

KeyedHandler:返回Map,具体见代码

MapHandler:返回单个Map

MapListHandler:返回List,每行是Map

ScalarHandler:返回列的头一个值

1 对于数据表的读操作 他可以把结果转换成List Array Set等java集合 便于程序员操作; 2 对于数据表的写操作 也变得很简单(只需写sql语句) 3 可以使用数据源 使用JNDI 数据库连接池等技术来优化性能 重用已经构建好的数据库连接对象 而像php asp那样 费时费力的断重复的构建和析构这样的对象 DBUtils包括3个包: org apache commons dbutils org apache commons dbutils handlers org apache commons dbutils wrappers DBUtils封装了对JDBC的操作 简化了JDBC操作 可以少写代码 org apache commons dbutils DbUtils 关闭链接等操作 QueryRunner 进行查询的操作 org apache commons dbutils handlers ArrayHandler :将ResultSet中第一行的数据转化成对象数组 ArrayListHandler将ResultSet中所有的数据转化成List List中存放的是Object[] BeanHandler :将ResultSet中第一行的数据转化成类对象 BeanListHandler :将ResultSet中所有的数据转化成List List中存放的是类对象 ColumnListHandler :将ResultSet中某一列的数据存成List List中存放的是Object对象 KeyedHandler :将ResultSet中存成映射 key为某一列对应为Map Map中存放的是数据 MapHandler :将ResultSet中第一行的数据存成Map映射 MapListHandler :将ResultSet中所有的数据存成List List中存放的是Map ScalarHandler :将ResultSet中一条记录的其中某一列的数据存成Object org apache commons dbutils wrappers SqlNullCheckedResultSet :对ResultSet进行操作 改版里面的值 StringTrimmedResultSet :去除ResultSet中中字段的左右空格 Trim ">1 对于数据表的读操作 他可以把结果转换成List Array Set等java集合 便于程序员操作; 2 对于数据表的写操作 也变得很简单(只需写sql语句) 3 可以使用数据源 使用JNDI 数据库连接池等技术来优化性能 重用已经构建好的 [更多]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值