DBUtils工具类

【JAVA积累】 同时被 2 个专栏收录
23 篇文章 0 订阅

    前面我们学习了JDBC连接相应的数据库,可以对数据进行一些增删改查的操作,但是仍然存在一些冗余。随着技术的进步,这些不能满足当前大数据时代的要求,需要更加方便简洁的方式来操作数据。这时候就引入DBUtils,这是Apache commons组件的一个成员:我们用的是commons-dbutils-1.6.jar。

【简介】

DBUtils是java编程中的数据库操作工具,封装了JDBC的操作,即JDBC的简化开发工具包。

三个核心功能类:

QueryRunner中提供对sql语句操作的API---update和query

ResultSetHandler接口,用于定义select操作后,怎样封装结果集。

DbUtils类,它就是一个工具类,定义了关闭资源与事务处理的方法。

【-QueryRunner之update和query】

update(Connection conn, Stringsql, Object... params) ,用来完成表数据的增加、删除、更新操作。

query(Connection conn, Stringsql,ResultSetHandler<T> rsh, Object... params) ,用来完成表数据的查询操作。

【结果集的处理】

ResultSetHandler对结果集的处理。


public class DBUtilsDemo {
	private static Connection conn = MyJDBCUtils.getConnection();
	private static QueryRunner qr=new QueryRunner();
	public static void main(String[] args) throws Exception   {
		update();	//进行更新
		query();
	}
	//利用DBUtils工具类中的类QueryRunner进行更新
	public static void update() throws Exception{
		QueryRunner qr=new QueryRunner();
		String sql="insert into sort(sname,sprice,sdesc) values(?,?,?)";//占位符
		Object []  params  ={ "lisi", 12.12, "张三添加数据库"};
		int row1 = qr.update(conn, sql,params);
		System.out.println(row1);
		MyJDBCUtils.close();
		
		//不用DBUtils工具类更新
		/*String sql="INSERT INTO sort(sname,sprice,sdesc) VALUES(?,?,?)";
		PreparedStatement prs = conn.prepareStatement(sql);
		prs.setObject(1, "zhangsan");
		prs.setObject(2, "12345");
		prs.setObject(3, "张三添加数据库");
		int row = prs.executeUpdate();
		System.out.println(row);*/
	}

       //利用DBUtils工具类查询,对返回的结果集进行处理
	public static void query() throws SQLException{
		String sql="select * from sort where sid>?";
		Object [] params={3};
		
		//第一种方法将结果集的第一行封装成数组
		Object[] obj = qr.query(conn, sql, new ArrayHandler(),params);
		//遍历数组
		for (Object object : obj) {
			System.out.print(object+"\t");
		}
		
		//第二种方法将结果集的每一行封装成数组,然后添加到集合中
		List<Object[]> query = qr.query(conn, sql, new ArrayListHandler(), params);
		for (Object[] objects : query) {
			for (Object object : objects) {
				System.out.print(object+"\t");
			}
			System.out.println();
		}
		//第三种方法将结果集的第一行封装成实体对象
		sort query2 = qr.query(conn, sql, new BeanHandler<sort>(sort.class), params);
		System.out.println(query2);
		
		//第四种方法将结果集的每一行封装成实体对象,然后放在集合中
		List<sort> query3 = qr.query(conn, sql, new BeanListHandler<sort>(sort.class), params);
		for (sort sort : query3) {
			System.out.println(sort);
		}
		
		//第五种将结果集的一列返回到集合中
		List<Object> query4 = qr.query(conn, sql, new ColumnListHandler<>("sname"), params);
		for (Object object : query4) {
			System.out.println(object);
		}
		//第六种,当结果集为单个行单个列是用ScalarHandler返回long型
		String sql1="select count(*) from sort where sid>'4' ";
		long query5 = qr.query(conn, sql1, new ScalarHandler<Long>());
		System.out.println(query5);
		
		//第七种 将结果集第一行返回到map集合中
		Map<String, Object> map = qr.query(conn, sql, new MapHandler(), params);
		for (String key : map.keySet()) {
			System.out.print(key+" "+map.get(key));
		}
		
		//第八种 将结果集的每一条放在map中,然后存在集合中
		List<Map<String, Object>> query6 = qr.query(conn, sql, new MapListHandler(), params);
		for (Map<String, Object> map2 : query6) {
			for (String key:map2.keySet()) {
				System.out.print(key+" "+map2.get(key));
			}
			System.out.println();
		}
	}
}

【小结】

    自我感觉,DBUtils工具类在查询中更能体现它的方便,对数据库的查询直接可以根据需要定义,大大简化代码,提高效率。

  • 0
    点赞
  • 6
    评论
  • 3
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

评论 6 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

努力和时间做朋友

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值