DBUtils介绍
admin
2023-01-26 02:40:05
0

  一、DBUtils介绍 apache

  什么是DBUtils,它的作用

  DBUtils是Java编程中的数据库操作实用工具,小巧简单实用。

  DBUtils封装了对JDBC的操作,简化了JDBC操作,可以少写代码。

  1.对于数据表的读操作,他可以把结果转换成List,Array,Set等Java集合,便于程序员操作

  2.对于数据表的写操作,也变得很简单(只需写sql语句)

  3.可以使用数据源,使用JNDI,数据库连接池等技术来优化性能–重用已经构建好的数据库连接对象

  二、DBUtils的三个核心对象

  QueryRunner类

  ResultSetHandler接口

  DBUtils类

  QueryRunner类

  QueryRunner中提供对sql语句操作的API

  它主要有三个方法

  query() //用于执行select

  update() //用于执行insert update delete

  batch() //批处理

  ResultSetHandler接口

  用于定义select操作后,怎样封装结果集

  DBUtils类

  它就是一个工具类,定义了关闭资源与事务处理的方法

  三、Dbutils快速入门

  导入jar包

  创建QueryRunner对象

  使用query方法执行select语句

  使用ResultSetHandler封装结果集

  使用DBUtils类释放资源

  DBUtils快速入门实现步骤:

  导入jar包

  注意: c3p0与mysql驱动jar也要导入。

  创建QueryRunner对象

  使用query方法执行select语句

  使用ResultSetHandler封装结果集

  使用DBUtils类释放资源

  四、QueryRunner对象

  构造函数:无锡人流多少钱 http://www.xaytsgyy.com/

  new QueryRunner():它的事务可以手动控制

  也就是说此对象调用的方法(如:query、update、batrch)参数中要有Connection对象

  new QueryRunner(DataSource ds):它的事务是自动控制的 一个sql一个事务

  此对象调用的方法(如:query、update、batrch)参数中无需Connection对象

  进行基本的CRUD操作:练一下

  public class TestQueryRunner{

  @Test

  public void testInsert() throws SQLException{

  QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());

  qr.update("insert into student(NAME, birthday) values(?,?)", "bbb", new Date());

  }

  @Test

  public void testUpdate() throws SQLException{

  QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());

  qr.update("update student set name=?, birthday=? where id=?", "ccc", new Date(), 1);

  }

  @Test

  public void testDelete() throws SQLException{

  QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());

  qr.update("delete from student where id=?", 1);

  }

  @Test

  public void testBatch() throws SQLException{

  QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());

  Object[][] params = new Object[10][]; //高维表示要执行多少条sql语句

  for(int i = 0; i < params.length; i++){

  params[i] = new Object[]{"菜10"+i, "123", "c10@163.com", new Date()};

  }

  qr.batch("insert into user(username, password, email, birthday) values(?,?,?,?)", params);

  }

  }

  五、ResultSetHandler接口

  ResultSetHandler下的所有结果处理器

  ArrayHandler:适合取1条记录。把该条记录的每列值封装到一个数组中Object[]

  ArrayListHandler:适合取多条记录。把每条记录的每列值封装到一个数组中Object[],把数组封装到一个List中

  ColumnListHandler:取某一列的数据。封装到List中

  KeyedHandler:取多条记录,每一条记录封装到一个Map中,再把这个Map封装到另外一个Map中,key为指定的字段值

  MapHandler:适合取1条记录。把当前记录的列名和列值放到一个Map中

  MapListHandler:适合取多条记录。把每条记录封装到一个Map中,再把Map封装到List中

  ScalarHandler:适合取单行单列数据

  BeanHandler

  BeanListHandler


相关内容

热门资讯

【第一财经】“新海贝之城拼三张... 【第一财经】“新海贝之城拼三张.到底是不是挂?”透视曝光猫腻您好,新海贝之城拼三张这个游戏其实有挂的...
我来教教您“西域棋牌.可以开挂... 网上科普关于“西域棋牌有没有挂”话题很是火热,小编也是针对西域棋牌作*弊开挂的方法以及开挂对应的知识...
【第一消息】“兴动棋牌麻将.有... 家人们!今天小编来为大家解答兴动棋牌麻将透视挂怎么安装这个问题咨询软件客服徽9752949的挂在哪里...
重磅消息“潮汕掌上娱.辅助器?... 重磅消息“潮汕掌上娱.辅助器?”透视曝光猫腻您好,潮汕掌上娱这个游戏其实有挂的,确实是有挂的,需要了...
今日重大发现“一言棋牌.有没有... 网上科普关于“一言棋牌有没有挂”话题很是火热,小编也是针对一言棋牌作*弊开挂的方法以及开挂对应的知识...
我来教教您“兴动棋牌.是不是有... 我来教教您“兴动棋牌.是不是有挂?”必胜开挂神器您好,兴动棋牌这个游戏其实有挂的,确实是有挂的,需要...
【今日要闻】“九线拉王.开挂神... 有 亲,根据资深记者爆料九线拉王是可以开挂的,确实有挂(咨询软件无需打开...
今日重大消息“游戏茶苑.真的有... 有 亲,根据资深记者爆料游戏茶苑是可以开挂的,确实有挂(咨询软件无需打开...
易华录:蓝光存储成本为半导体存... 证券之星消息,易华录(300212)12月10日在投资者关系平台上答复投资者关心的问题。 投资者提问...
2025人工智能破壁时刻|De... > > 2025人工智能破壁时刻|DeepSeek火爆一年间 新华网 2025-12-11 19...