DbUtils技术

1.DbUtils介绍

最早操作数据使用的Java自带的JDBC技术JDBC操作数据库的时候存在很多严重的重复代码,并且需要程序员手动的释放相应的资源信息于是Apache组织又一次站出来,对JDBC技术进行简单的封装,形成可以快速数据进行CRUD操作的DbUtils工具类。

c3p0连接池 

//数据源

ComboPooledDataSource cpds = new ComboPooledDataSource();

2.操作数据库之增删改

// 创建执行SqlQueryRunner对象 ,这里不控制事务,需要传递数据源

QueryRunner qr = new QueryRunner(cpds));

//书写sql语句

//添加一条记录

//String sql = "insert into user values(null, ?, ?)";

//删除一条记录

//String sql = "delete from users where id = ?";

//修改一条记录

String sql = "update users set password = ? where username = ?";

// 执行sql,需要给出参数数据

//qr.update(sql, "lisi", "123");

//qr.update(sql, 1);

qr.update(sql , "lisi", "李四");

3.操作数据库之查询(重点)

ResultSetHandler实现

在DbUtils工具类,针对ResultSetHandler接口提供了11实现类

ArrayHandler它是把从数据库中查询的第一个行数据保存在数组中

ArrayListHandler:把查询的每一行数据都保存在数组中,然后把所有的数组保存在List集合中 

MapHandler:它会将查询到数据中的第一行列名作为mapkey,列值作为mapvalue保存在map集合中 

MapListHandler将查询到数据中的每一行以列名作为mapkey,列值作为mapvalue保存在map集合中每一行都是Map集合,然后把当前这个Map保存在List集合中。 

BeanHandler:把查询的第一行数据封装到一个JavaBean

BeanListHandler:把查询的每一行数据封装到一个JavaBean上,然后把每个JavaBean保存在List集合。 

BeanMapHandler:把查询的每一行数据封装到一个JavaBean上,把这个对象作为mapvalue值存在,然后需要使用某一列作为Mapkey

ColumnListHandler:把数据库中的某一列查询出来保存在List集合中。

KeyedHandler:把查询到的每一行数据中的列名作为key,列值作为value存储Map集合中然后再将创建KeyedHandler对象指定指定的列名作为新的Mapkey每行数据已经封装的Map作为新的Mapvalue值保存

ScalarHandler:可以获取到当前数据库中的数据记录条数。如果在创建ScalarHandler对象的时候,指定列名那么就会在查询的结果中,获取当前这列第一结果

例子:

ArrayListHandler演示

// 创建执行SqlQueryRunner对象 ,这里不控制事务,需要传递数据源

QueryRunner qr = new QueryRunner(cpds);

// 书写sql语句 查询所有数据

String sql = "select * from users";

// 执行sql

List<Object[]> query = qr.query(sql, new ArrayListHandler());

// 遍历数组

for (Object[] obj : query) {

System.out.println(Arrays.toString(obj));

}

查询结果:


MapHandler演示(重点)

QueryRunner qr = new QueryRunner(dbcp);

//书写sql语句 ,查询所有用户信息

String sql = "select * from users ";

Map<String, Object> map = qr.query(sql, new MapHandler());

// 遍历集合

for (Entry<String, Object> entry : map.entrySet()) {

System.out.println( entry.getKey() +"==="+entry.getValue() );

}

以下是只写执行sql语句部分,前几步操作和前面一致

MapListHandler演示(重点)

String sql = "select * from users ";

List<Map<String, Object>> list = qr.query(sql, new MapListHandler());

 BeanHandler演示(重点)

String sql = "select * from users where id = ?";

/*

 *  执行sql。在创建BeanHandler对象的时候,需要指定出查询数据封装的JavaBean对应的Class

 */

User user = qr.query(sql, new BeanHandler<User>(User.class), 4);

BeanListHandler演示(重点)

String sql = "select * from users ";

/*

 *  执行sql。在创建BeanListHandler对象的时候,

 *  需要指定出查询数据封装的JavaBean对应的Class,

 *  BeanListHandler 底层会将封装的JavaBean对象再保存到List集合中

 */

List<User> query = qr.query(sql, new BeanListHandler<User>(User.class));

BeanMapHandler演示

String sql = "select * from users "; 

/*

 * 在创建BeanMapHandler对象的时候, 需要指定出查询数据封装的JavaBean对应的Class,

 * 同时需要在指定表中的某一列作为Map集合的key值。每一行的数据封装的JavaBean中作为Mapvalue

 */

Map<Integer, User> map = qr.query(sql, new BeanMapHandler<Integer , User>(User.class,"id"));

运行结果


ScalarHandler演示(重点)

//获取到当前数据库中的数据记录条数

String sql = "select count(*) from users";

Long number = qr.query(sql, new ScalarHandler<Long>());

运行结果


如果在创建ScalarHandler对象的时候指定列名,返回的是当前这列第一行值。


String sql = "select * from users";

String s = qr.query(sql, new ScalarHandler<String>("username"));

查询结果:


此篇介绍了DButil技术的增删该查,在真正的工作阶段,都会使用hibernate,mybatis等数据库框架,因此本人感觉意义不大!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值