探讨druid和DBUtils的使用

发布于:2022-11-05 ⋅ 阅读:(333) ⋅ 点赞:(0)
个人理解:
  最开始我们使用druid连接池来连接数据库,我们通过DruidDataSourceFactory来获取一个数据源对象,在创建的时候,
  传入一个druid.properties配置文件(这个配置文件包括了注册驱动driver,url user等等,这些都是连接数据的必要信息)
  读取连接数据库相关信息,然后返回一个dataSource,这个dataSource就是存放连接的地方了,也就是连接池
  我们利用这个数据源对象dataSource dataSource.getConnection()返回一个Connection,
  我们在通过这个connection(这个connection已经跟mysql数据库连接起来了)返回一个preparedStatement
  那么这个preparedStatement就是我们真正执行sql语句的地方了,编写一个sql语句,比如说,查询语句
  利用preparedStatement.executeQuery(),会返回一个resultSet,这个resultSet就可以把它看作一张表了
  利用这个resultSet.next方法,最开始是指向该表的第一行的前一行,调用完resultSet.next就会指向下一行
  然后关闭resultSet,connection,preparedStatement资源,然后我们就会发现一个问题,如果我们关闭了resultSet
 那么我们就不能查看表的内容了,因为连接数据库的connection已经断开了,然后我们就想到一个土办法,我们可以在读取完表中
  的数据后,我们编写一个类,这个类的属性与表的列一一对应,把这些数据封装到我们编写的类中,表的一行就代表一个对象
  然后我们就把这一个个对象封装到Arraylist集合中。那么我们可以使用DBUtils这个封装类的方法将数据如上述描述保存到Arraylist
  我们引入 阿帕奇.dbutils.jar包,这个包有一个QueryRunner,目前我对这个类不是很了解,但它有一个方法query,
  这个方法就可以传入我们通过德鲁伊连接池返回的连接Connection,还有组织的sql语句,
  还有一个用于反射的BeanListHandler<>(Actor.class),这个用于底层的反射,反射类的结构,将数据以这个类结构封装起来
  还要传入一个可变形参,那么底层会通过我们传入的connection和sql语句返回一个preparedStatement,注意我们是不用关闭resulSet,preparedStatement,query方法底层会帮我们关闭,
但是connection要我们自己关闭

网站公告

今日签到

点亮在社区的每一天
去签到