DBUtils框架ResultSetHandler接口学习
Posted g-cl
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DBUtils框架ResultSetHandler接口学习相关的知识,希望对你有一定的参考价值。
今儿在学习spring框架的时候,让我想起来之前做项目时一直搁置的一个问题,就是DBUtils框架的做数据库操作的使用,当时制作项目的时候就是通过实例打了一遍,由于时间原因也并没有仔细去了解这一方面。所以,今天来学习下对于这方面的使用。
通过查阅资料发现QueryRunner类的基本CRUD的使用
以下是我摘下来的一些认为重要的点
QueryRunner中一共有6种方法:
-
execute(执行SQL语句)
-
batch(批量处理语句)
-
insert(执行INSERT语句)
-
insertBatch(批量处理INSERT语句)
-
query(SQL中 SELECT 语句)
-
update(SQL中 INSERT, UPDATE, 或 DELETE 语句)
我们主要介绍最后两种(最常用):
query方法
-
T query(String sql, ResultSetHandler rsh) 不需要替换参数来执行已给予的SELECT语句
-
T query(String sql, ResultSetHandler rsh, Object... params) 需要一个或多个替换参数来执行已给予的SELECT语句,并返回一种对象结果
update方法
-
int update(Connection conn, String sql) 不需要替换参数来执行INSERT, UPDATE DELETE语句
-
int update(Connection conn, String sql, Object... params) 需要一个或多个替换参数以及一个数据库连接来执行INSERT, UPDATE DELETE语句
-
int update(Connection conn, String sql, Object param) 需要一个替换参数,以及一个数据库连接来执行INSERT, UPDATE DELETE语句
-
int update(String sql) 不需要替换参数来执行已给予的INSERT, UPDATE DELETE语句
-
int update(String sql, Object... params) 需要一个或多个替换参数来执行INSERT, UPDATE DELETE语句(参数无需带有连接)
-
int update(String sql, Object param) 不需要替换参数来执行INSERT, UPDATE DELETE语句(参数无需带有连接)
下面是ResultSetHandler接口的使用
来自大佬的分享
ResultSetHandler接口 该接口用于处理java.sql.ResultSet,将数据按要求转换为另一种形式。 ResultSetHandler接口提供了一个单独的方法:Object handle(java.sql.ResultSet.rs)。 ResultSetHandler接口的实现类 ArrayHandler:把结果集中的第一行数据转换成对象数组。 ArrayListHandler:把结果集中的每一行数据都转换成一个对象数组,再存放到List中。 BeanHandler:将结果集中的第一行数据封装到一个对应的JavaBean实例中。 BeanListHandler:将结果集中的每一行数据都封装到一个对应的JavaBean实例中,存放到List里。 MapHandler:将结果集中的第一行数据封装到一个Map里,key是列名,value就是对应的值。 MapListHandler:将结果集中的每一行数据都封装到一个Map里,然后再存放到List。 ColumnListHandler:将结果集中某一列的数据存放到List中。 KeyedHandler(name):将结果集中的每一行数据都封装到一个Map里(List),再把这些map再存到一个map里,其key为指定的列。 ScalarHandler:获取结果集中第一行数据指定列的值,常用来进行单值查询
可能有些同学不懂什么事JavaBean,下面给出JavaBean的概念
JavaBean是使用Java语言开发的一个可重用组件,能使html代码与JAVA代码分离,并节省开发时间,简单的说就是一个包含了setter和getter以及至少一个无参构造方法的JAVA类。
//JavaBean的栗子如下 public class Person { private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
//查询所有 public List<Account> findAllAccount() { try { return runner.query("select * from account", new BeanListHandler<Account>(Account.class)); } catch (Exception e) { throw new RuntimeException(e); } } // 返回Account的集合
//通过Id查询 public Account findAccountById(Integer accountId) { try { return runner.query("select * from account where id = ? ", new BeanHandler<Account>(Account.class), accountId); } catch (Exception e) { throw new RuntimeException(e); } } // 返回一个Account的结果
已上就是我通过总结大佬的分享,对ResultSetHandler的理解。
谢谢大家的观看~
以上是关于DBUtils框架ResultSetHandler接口学习的主要内容,如果未能解决你的问题,请参考以下文章
commons-dbutils学习——QueryRunner类和ResultSetHandler接口介绍