欢迎您访问南华自考网!

数据库工具包DBUtils介绍以及应用示例

更新时间:2023-11-17 07:22:09作者:51data

之前写过DBUtil和分页处理的介绍,参考连接:DBUtil和分页实现。

1.概述DBUtils封装了JDBC的操作,简化了JDBC的操作,可以写更少的代码。不使用框架,使用DBUtils的概率非常高。

数据库工具包DBUtils介绍以及应用示例

DBUtils的三个核心功能介绍:

QueryRunner类,为sql语句操作提供APIResultSetHandler接口,用于定义select操作后如何封装结果集DbUtils类。它是一个工具类,定义了关闭资源和事务处理的方法。2.QueryRunner核心类QueryRunner(数据库ds),提供数据源(连接池),DBUtils底层自动维护连接更新(字符串SQL,对象.params)来更新数据。(添加、删除、更改)查询(字符串SQL,结果集处理程序rsh,对象.params),执行查询3。ResultSetHandler结果处理集类我们知道,执行select语句后,我们得到resultset,然后需要对resultset进行转换,得到我们想要的最终数据。您可能希望将ResultSet的数据放在一个列表中,或者希望将数据放在一个Map或Bean中。

DBUtils提供了一个接口ResultSetHandler,这是一个将ResultSet转换为目标类型的工具。您可以自己实现这个接口,并将ResultSet转换成您想要的类型。

DBUtils提供了ResultSetHandler接口的很多实现,这些实现基本上足够了。我们通常不需要自己实现ResultSet接口。

MapHandler:单线处理器!将结果集转换为Map,其中列名为key maplishandler:Multiline Processor!将结果集转换为列表;BeanHandler:单行处理器!要将结果集转换成Bean,处理器需要Class参数,即Bean的类型;多线处理器!将结果集转换为列表;ColumnListHandler:多行单列处理器!若要将结果集转换为列表,需要在使用ColumnListHandler时指定列的名称或编号。例如,new columlishandler(“name”)意味着将name列的数据放入列表中。ScalarHandler:单行处理器!将结果集转换为Object。一般用于聚合查询,如select count(*) from tab_student。地图处理器:

每个记录充当一个映射,映射的关键字是字段名称。

Bean处理器:

你必须得到一个javaBean。

色谱柱处理器:

标量处理器:

(4)DbUtils工具类

Close quiet (connectionconn)关闭连接,如果有异常尝试,不要抛出CommitandClosequiet(connection conn)提交并关闭连接。RollbackandClosequiet(connection conn)回滚并关闭连接。3.应用程序示例-添加、删除和检查Bean对象类用户:

公共类用户{ private int uid私有字符串uname私有字符串upasswordpublic User(){ } public int getUid(){ return uid;} public void setUid(int uid){ this . uid=uid;} public String getUname(){ return uname;} public void setUname(String uname){ this . uname=uname;} public String getup password(){ return up password;} public void setup password(String up password){ this . up password=up password;}}数据库连接工具类

导入Java . SQL . connection;导入Java . SQL . SQL exception;导入javax . SQL . data source;导入com . m change . v2 . c3p 0 . combobooleddatasource;公共类c 3p 0 utils { private static combobooleddatasource data source=new combobooleddatasource(' ithe IMA ');公共静态数据源get data source(){ return data source;}公共静态连接getConnection(){ try { return data source . getConnection();} catch(SQLException e){ throw new runtime exception(e);}}}添加、删除和修改:

导入Java。SQL。SQL异常;导入org。阿帕奇。公地。dbutils。查询运行器;导入org。朱尼特。测试;导入cn。我是IMA。JDBC。utils。c3po utils;/** * 测试DBUtils工具类的增删改操作* */公共类TestDBUtils1 { /** *添加所有用户方法*/@ Test public void testAddUser(){ try {//1 .创建核心类query runner query runner QR=new query runner(c 3p 0 utils。获取数据源());//2.编写结构化查询语言语句string SQL=' insert into user values(null,)'//3.为占位符设置值Object[] params={ '薛淮' '赵耿' };//4.执行添加操作int rows=qr.update(sql,params);if (rows 0) { System.out.println('添加成功!');} else { System.out.println('添加失败!');} } catch (SQLException e) { //TODO自动生成的捕捉块e . printstacktrace();} } /** * 根据身份证明(识别)修改用户方法* */@ Test public void testUpdateUserById(){ try {//1 .创建核心类query runner query runner QR=new query runner(c 3p 0 utils。获取数据源());//2.编写结构化查询语言语句string SQL=“更新用户设置密码=其中uid=”;//3.为站位符设置值Object[] params={ 'xxx '21 };//4.执行添加操作int rows=qr.update(sql,params);if (rows 0) { System.out.println('修改成功!');} else { System.out.println('修改失败!');} } catch (SQLException e) { //TODO自动生成的捕捉块e . printstacktrace();} } /** * 根据身份证明(识别)删除用户方法*/@ Test public void testDeleteUserById(){ try {//1 .创建核心类query runner query runner QR=new query runner(c 3p 0 utils。获取数据源());//2.编写结构化查询语言语句字符串SQL=' delete from user where uid=//3。为站位符设置值object[]params={ 19 };//4.执行添加操作int rows=qr.update(sql,params);if (rows 0) { System.out.println('删除成功!');} else { System.out.println('删除失败!');} } catch (SQLException e) { //TODO自动生成的捕捉块e . printstacktrace();} }}TestDBUtils1.java -添加、删除、更新查询示例:

导入Java。SQL。SQL异常;导入Java。util。列表;导入Java。util。地图;导入org。阿帕奇。公地。dbutils。查询运行器;导入org。阿帕奇。公地。dbutils。经手人。bean处理程序;导入org。阿帕奇。公地。dbutils。经手人。beanlisthandler导入org。阿帕奇。公地。dbutils。经手人。columnlisthandler导入org。阿帕奇。公地。dbutils。经手人。映射列表处理程序;导入org。阿帕奇。公地。dbutils。经手人。标量处理程序;导入org。朱尼特。测试;导入cn。我是IMA。域。用户;导入cn。我是IMA。JDBC。utils。c3po utils;/** * 测试DBUtils查询操作* */公共类TestDBUtils2 { /* *查询所有用户方法*/@ Test public void testQueryAll(){ try {//1 .获取核心类query runner query runner QR=new query runner(c 3p 0 utils。获取数据源());//2.编写结构化查询语言语句字符串sql=' select * from user//3。执行查询操作List users=qr.query(sql,new BeanListHandler(user。类));//4.对结果集集合进行遍历对于(用户用户:用户){系统。出去。println(用户。getuname()“:”用户。getup password());} } catch(SQLException e){抛出新的运行时异常(e);} } /* * 根据id查询用户方法*/@ Test public void testQueryUserById(){ try {//1 .获取核心类query runner query runner QR=new query runner(c 3p 0 utils。获取数据源());//2.编写结构化查询语言语句string SQL=' select * from user where uid='//3.为占位符设置值object[]params={ 21 };//4.执行查询操作User user=qr.query(sql,new BeanHandler(User.class),params);系统。出去。println(用户。getuname()“:”用户。getup password());} catch(SQLException e){抛出新的运行时异常(e);} } /* * 根据所有用户的总个数*/@ Test public void testQueryCount(){ try {//1 .获取核心类query runner query runner QR=new query runner(c 3p 0 utils。获取数据源());//2.编写结构化查询语言语句string SQL=' select count(*)from TBL _用户'//4.执行查询操作Long count=(Long) qr.query(sql,新标量处理程序());系统。出去。println(计数);} catch(SQLException e){抛出新的运行时异常(e);} } /* *查询所有用户方法*/@ Test public void testqueryall 1(){ try {//1 .获取核心类query runner query runner QR=new query runner(c 3p 0 utils。获取数据源());//2.编写结构化查询语言语句字符串sql=' select * from user//3。执行查询操作List list=qr.query(sql,new maplishandler());//4.对结果集集合进行遍历for(Map Map:list){ system。出去。println(地图);} } catch(SQLException e){抛出新的运行时异常(e);} } /* *查询所有用户方法*/@ Test public void testqueryal 2(){ try {//1 .获取核心类query runner query runner QR=new query runner(c 3p 0 utils。获取数据源());//2.编写结构化查询语言语句字符串sql=' select * from user//3。执行查询操作List list=qr.query(sql,new ColumnListHandler(' uname '));//4.对结果集集合进行遍历for(Object Object:list){ system。出去。println(对象);} } catch(SQLException e){抛出新的运行时异常(e);} } }//testdbutils 2。Java-查询操作【注意】:DBUtils在创建QueryRunner时传入数据源对象,每次在执行完之后都会自动关闭关系连接对象。(就相当于把指挥操舵交给dbutils管理了,他会帮我们关掉)

如果没有传入数据源的话,需要手动关闭。

相关文章

为您推荐

第十三届国际政治经济学论坛“全球发展倡议和全球安全倡议:理论逻辑与实践基础”顺利召开

2022年12月22日,由中国社会科学院世界经济与政治研究所与国际关系学院主办、中国社会科学院国家全球战略智库秘书处承办的第十三届国际政治经济学论坛“全球发展倡议和全球安全倡议:理论逻辑与实践基础”在线上举行。与会专家围绕“全球发展倡议和全

2023-11-17 07:22

广西自学考试报名时间2021(广西2021年自学考试时间)

记者从广西壮族自治区招生考试院获悉,为做好我区高等教育自学考试(以下简称自学考试)转考工作,根据教育部考试中心的统一安排和部署要求,自治区招生考试院定于2月18日至3月1日开放2022年上半年高等教育自学考试转考申请。具体事宜如下:一、办理

2023-11-17 06:42

每日一练丨2023军队文职公共科目笔试备考戎忆珍题-45

由于政治国情、法律条文等的变更,部分题目只试用于当年题目。 本题集来源于互联网和考生回忆,红师教育收集整理。1、下列情形中,属于无因管理的是( )。 A. 在加工合同中,承揽人管理定做人提供的原材料B. 买方无正当理由拒收卖方交付的货物,卖

2023-11-17 06:42

广西自考申请毕业流程(广西自学考试即将报名)

记者11月4日了解到,为做好我区2020年下半年高等教育自学考试(以下简称自学考试)毕业资格审核、毕业证书及考籍档案发放工作,自治区招生考试院将于11月14日至11月30日开放我区2020年下半年自学考试毕业申请。本次毕业申请分网上申请和现

2023-11-17 06:42

第一届中国经济思想发展论坛在沪举行时间(中国经济社会论坛学术版)

中新网上海新闻12月18日电(记者 许婧)第一届中国经济思想发展论坛17日在上海财经大学举行。论坛聚焦“中国经济学构建:历史与未来”主题,旨在深入学习贯彻党的二十大精神,从不同维度深入探讨中国自主的经济学知识体系构建,助力新时期中国经济学构

2023-11-17 06:42

第四代哲学之《迷宫导游外传》10价格规律有真假,经济体系自两分

第四代哲学之《迷宫导游外传》10.价格规律有真假,经济体系自两分。任何事物都有规律,这是任何学说都认可的。商品的价格和商品这两个事物是独立的事物,当然应该有它们自己的规律。但是,当人们去政治经济学中寻找商品的价格规律以及商品的规律的时候,没

2023-11-17 06:42

加载中...