JDBC学习06-DBUtils下载和使用
来源:互联网 发布:司法考试培训班 知乎 编辑:程序博客网 时间:2024/06/05 18:02
一、DBUtils简介
如果只使用JDBC开发,将会存在大量冗余、重复的代码。为了简化JDBC开发,可以使用Apache commons组件的DBUtils。
Commons DbUtils是Apache组织提供的一个对JDBC进行简单封装的开源工具类库,使用它能够简化JDBC应用程序的开发,同时也不会影响程序的性能。
DBUtils三个核心功能:
1.QueryRunner中提供对sql语句操作的API。
2.ResultSetHandler接口,用于定义select操作后封装结果集。
3.DbUtils类,工具类,定义了关闭资源与事务处理方法。
二、DBUtils常用类和方法
1.QueryRunner核心类常用方法
·QueryRunner(DataSource ds),提供数据源(连接池),DBUtils底层自动维护连接·update(String sql,Object[] params),执行更新数据操作·query(String sql,ResultSetHandler<T> rsh,Object[] params),执行查询
2.ResultSetHandler结果集处理类常用方法
·BeanHandler() 将结果集中第一条记录封装到JavaBean中·BeanListHandler() 将结果集中每一条记录封装的指定的JavaBean中,将这些JavaBean封装到List集合中。·ScalarHandler() 用于单数据。
三、DBUtils的使用
1.使用DBUtils在表中添加数据
@Test public void testAddfruit(){ try { //1.创建核心类 QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource()); //2.编写SQL语句 String sql = "INSERT INTO fruits VALUES(?,?,?,?)"; //3.为占位符设置值 Object[] params={"s3",109, "mulberry",17.2}; //4.执行添加操作 int rows = qr.update(sql,params); //5.打印结果 if(rows>0){ System.out.println("添加成功"); } else { System.out.println("添加失败"); } } catch (SQLException e) { e.printStackTrace(); } }
操作结果
2.使用DBUtils修改表中数据
@Test public void testUpdate(){ try { QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource()); String sql = "UPDATE fruits SET f_price=? where f_id=?"; Object[] params = {16.6,"s3"}; int rows = qr.update(sql,params); if(rows>0){ System.out.println("修改成功"); } else { System.out.println("修改失败"); } } catch (SQLException e) { e.printStackTrace(); } }
操作结果
3.使用DBUtils删除表中数据
@Test public void testDelete(){ try { QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource()); String sql = "DELETE FROM fruits WHERE f_id=?"; Object param = "s3"; int rows = qr.update(sql,param); if(rows>0){ System.out.println("删除成功"); } else { System.out.println("删除失败"); } } catch (SQLException e) { e.printStackTrace(); } }
操作结果
4.使用DBUtils查询表中数据
编写JavaBean用于保存查询到的数据
public class Fruit { private String f_id; private int s_id; private String f_name; private double f_price; public String getF_id() { return f_id; } public void setF_id(String f_id) { this.f_id = f_id; } public int getS_id() { return s_id; } public void setS_id(int s_id) { this.s_id = s_id; } public String getF_name() { return f_name; } public void setF_name(String f_name) { this.f_name = f_name; } public double getF_price() { return f_price; } public void setF_price(double f_price) { this.f_price = f_price; }}
编写查询操作代码(查询所有)
@Test public void testSelect(){ try { QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource()); String sql = "SELECT * FROM fruits"; //查询到的结果保存在集合中 List<Fruit> fruits = qr.query(sql,new BeanListHandler<Fruit>(Fruit.class)); //输出查询结果 for (Fruit fruit:fruits){ System.out.println(fruit.getF_id()+"---"+fruit.getF_name()+"---"+fruit.getF_price()); } } catch (SQLException e) { e.printStackTrace(); } }
操作结果
按条件查询
@Test public void testSelectByf_id(){ try { QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource()); String sql = "SELECT * FROM fruits WHERE f_id=?"; //为占位符设置值 Object[] param = {"b1"}; //查询到的结果在对象中 Fruit fruit = qr.query(sql, new BeanHandler<Fruit>(Fruit.class), param); //输出查询结果 System.out.println(fruit.getF_id()+"---"+fruit.getF_name()+"---"+fruit.getF_price()); } catch (SQLException e) { e.printStackTrace(); } }
查询结果
单数据查询
@Test public void testSelectConut(){ try { QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource()); String sql = "SELECT COUNT(*) FROM fruits"; Object count = qr.query(sql, new ScalarHandler<>()); System.out.println(count.toString()); } catch (SQLException e) { e.printStackTrace(); } }
操作结果
5.其他ResultSetHandler简介
我们知道在执行select语句之后得到的是ResultSet,然后我们还需要对ResultSet进行转换,得到最终我们想要的数据。你可以希望把ResultSet的数据放到一个List中,也可能想把数据放到一个Map中,或是一个Bean中。
DBUtils提供了一个接口ResultSetHandler,它就是用来ResultSet转换成目标类型的工具。你可以自己去实现这个接口,把ResultSet转换成你想要的类型。
DBUtils提供了很多个ResultSetHandler接口的实现,这些实现已经基本够用了,我们通常不用自己去实现ResultSet接口了。
1.MapHandler:单行处理器!把结果集转换成Map<String,Object>,其中列名为键!2.MapListHandler:多行处理器!把结果集转换成List<Map<String,Object>>;3.BeanHandler:单行处理器!把结果集转换成Bean,该处理器需要Class参数,即Bean的类型;4.BeanListHandler:多行处理器!把结果集转换成List<Bean>;5.ColumnListHandler:多行单列处理器!把结果集转换成List<Object>,使用ColumnListHandler时需要指定某一列的名称或编号,例如:new ColumListHandler(“name”)表示把name列的数据放到List中。6.ScalarHandler:单行单列处理器!把结果集转换成Object。一般用于聚集查询,例如select count(*) from tab_student。
- JDBC学习06-DBUtils下载和使用
- DbUtils component学习使用(jdbc封装工具)
- JDBC连接和DBUtils的使用详解
- jdbc-使用DBUtils进行crud
- JDBC : 使用DBUtils 工具类
- JDBC:Apache DBUtils的使用
- jdbc优化-DButils的使用
- JDBC(十)使用 DBUtils
- JDBC补充:DBUtils和ThreadLocal
- JDBC( 十)减轻JDBC,dbutils使用
- Dbutils框架使用和文件的上传和下载
- 使用commons-dbutils简化JDBC操作(二) dbutils+反射
- DbUtils介绍和使用
- JDBC学习之路之apache dbutils
- 使用commons-dbutils进行JDBC项目开发
- 使用commons-dbutils进行JDBC项目开发
- 使用commons-dbutils简化JDBC操作(一)
- jdbc中dbutils的类别使用
- 设置mongoDB dos窗口数据库命令格式
- MyBatis的级联查询(association 进行分布查询)
- textarea高度自适应增高;chrome下clientHeight,offsetHeight和scrollHeight
- 租了一个月的腾讯云服务, 玩ubuntu爽爽哒
- MPI_Send和MPI_Recv(初识1)
- JDBC学习06-DBUtils下载和使用
- Python(四)
- Android 多语言支持
- uva116
- vue 路由组件
- [Oracle] CPU/PSU补丁安装详细教程
- 葡萄城ComponentOne全功能开发控件套包发布2017V3 新版本
- 图
- 使用Gradle构建多个不同applicationId包