java beanlisthandler_java基础专栏—DBUtils(2)

DBUtils

​ 简化开发的冗余代码

QueryRunner中提供SQL语句操作API

ResultSetHandler接口,用于定义select操作后怎样处理结果集

DBUtils对于一切事物的关闭类

是线程安全的

事务

​ 转账操作

​ 将对个Sql操作封装成一个事务对象,它有返回值,执行成功就返回ture,否者返回false.然后对事务进行回滚(rollback)不破坏原有数据

public static int update(Connection con,String sql,Object...Para)

QueryRunner

QueryRunner类的query方法

public T query

(Connection con,String sql,ResultSetHandler r,Object...params)

public static void insert(){

QueryRunner qr = new QueryRunner();

String sql =

"INSERT INTO sort (sname,pass,desc)VALUE(?,?,?)"

Object[] params = {"xxxx",123,"xxxx"};

int row = qr.update(con,sql,params);

DbUtils.closeQuiety(con);

}

public static void delete(){

}

ResultSetHandler

​ 结果集处理接口,对所有的查询结果数据的处理类,每一种对应的实现类就是一种结果的处理方式

Function

describle

ArrayHandler

将结果集封装到Object[]数组中每个元素就是一个字段的值

ArrayListHandler

将结果的每一条记录封装搭配Object[]中,在封装到List中

将结果集中的第一条记录封装到指定JavaBean中

BeanListHandler

将结果的每条记录封装到JavaBean中,在封装到List中

ColumnListHandler

将结果集中指定的列的字段值封装到List中

ScalarHandler

用于单数据如:SELECT count(*) FROM 'table'

MapHandler

MapListHandler

既是以各种不同的方式来处理结果

ArrayHandler

//将结果集的第一行存储到对象数组中Object[]

QueryRunner qr = new QueryRunner();

String sql = "SELECT * FROM sort";

//调用方法的query

Objcet[] objs = qr.query(con,sql,new ArrayHandler());

//遍历查询结果

for(Object[] obj:objcs){

//TODO

}

ArrayListHandler

QueryRunner qr = new QueryRunner();

String sql = "SELECT * FROM sort";

List results =

qr.query(con,sql,new ArrayListHandler());

for(Object[] objs:results){

for(Object obj:objs){

//TODO

}

}

==BeanHandler==

​ 实现BeanHandler的构造传入的类必须用空参的构造器

//不管数据有多少只把第一行封装到bean对象

QueryRunner qr = newe QueryRunner();

String sql = "SELETE * FROM sort";

//BeanHandler没有空参构造器

//public BeanHandler(Class c)传递Sort类的class文件对象

Sort s = qr.query(con,sql,new BeanHandler(Sort.class));

//如果没有这个结果集那么被封装到Bean的对象就是null

==BeanListHandler==

//将结果集的每一行封装到JavaBean对象

QueryRunner qr = new QueryHandler();

String sql = "";

List list =

qr.query(con,sql,new BeanListHandler(Sort.class));

for(Sort s : list){

//TODO

}

ColumnListHandler

//将指定的列的数据封装到List集合

QueryRunner qr = new QueryRunner();

String sql = "SELECT * FROM sort";

//在column中要拿那一列就要在sql语句中有体现

List list =

qr.query(con,sql,new ColumnListHandler("columnName"));

for(Object obj : list){

//TODO

}

ScalerHandler

​ 对于查询以后只有一个结果的查询适用

QueryRunner qr = new QueryRunner();

String sql = "SELECT count(*) FROM sort";

//必须保证结果的类型是确定的才可以确定类型,否者都是Object

Object obj = qr.query(con,sql,new ScalerHandler);

MapHandler

QueryHandler qr = new QueryHandler();

String sql = "SELECT * FROM sort";

//返回值:map集合,Map接口的实现类。泛型

Map map = qr.query(con,sql,new MapHandler())

for(Object obj : map){

//TODO

}

MapListHandler

QueryHandler qr = new QueryHandler();

String sql = "SELECT * FROM sort";

List> list = qr.query(con,sql,new MapListHandler());

for(Map map :list){

for(String key : map.getKey()){

map.getValue(key);

}

}

连接池

​ 如果操作连接与释放资源操作就会占用大量的资源,特别是对于多用户连接访问的网络程序

​ 规范:数据源的连接池都是由第三方提供,但是不管是谁提供都的实现javax.sql.DataSource

DBCP

​ Tomcat:java的web服务器,内置了一个连接池,把我们写好的class文件放在Tomcat中,在运行是,Tomcat会监听端口。

所以开发一个交互数据库项目需要很多的jar包的支持

commons-dbcp.jar

commons-dbutils.jar

commons-pool.jar

mysql-connector-java-bin.jar


版权声明:本文为weixin_42191440原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。