java基础专栏—DBUtils(2)
2017-10-20 00:00
127 查看
摘要: 笔者在java学习的这条道路上也是断断续续走了一年多了,视频啊,书籍啊什么的也看了好几遍了,真的是java从入门到放弃啊,哈哈,看的多了一渐渐的明白了一点东西,笔者整理了一些自己的学习笔记,在此与大家分享,不喜勿喷,多多指教,万分感谢。
QueryRunner中提供SQL语句操作API
ResultSetHandler接口,用于定义select操作后怎样处理结果集
DBUtils对于一切事物的关闭类
是线程安全的
将对个Sql操作封装成一个事务对象,它有返回值,执行成功就返回ture,否者返回false.然后对事务进行回滚(rollback)不破坏原有数据
既是以各种不同的方式来处理结果
所以开发一个交互数据库项目需要很多的jar包的支持
commons-dbcp.jar
commons-dbutils.jar
commons-pool.jar
mysql-connector-java-bin.jar
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<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<Object[]> 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>(Sort.class)); //如果没有这个结果集那么被封装到Bean的对象就是null
==BeanListHandler==
//将结果集的每一行封装到JavaBean对象 QueryRunner qr = new QueryHandler(); String sql = ""; List<Sort> list = qr.query(con,sql,new BeanListHandler<Sort>(Sort.class)); for(Sort s : list){ //TODO }
ColumnListHandler<T>
//将指定的列的数据封装到List集合 QueryRunner qr = new QueryRunner(); String sql = "SELECT * FROM sort"; //在column中要拿那一列就要在sql语句中有体现 List<Object> list = qr.query(con,sql,new ColumnListHandler<Object>("columnName")); for(Object obj : list){ //TODO }
ScalerHandler<T>
对于查询以后只有一个结果的查询适用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<String,Object> map = qr.query(con,sql,new MapHandler()) for(Object obj : map){ //TODO }
MapListHandler
QueryHandler qr = new QueryHandler(); String sql = "SELECT * FROM sort"; List<Map<String,Object>> list = qr.query(con,sql,new MapListHandler()); for(Map<String,Object> 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
相关文章推荐
- java基础专栏—Properties
- 【java基础:JDBC】采用DBUtils工具集进行数据库的增删改操作的demostration
- java基础专栏—IOBuffer(2)
- java基础专栏—IO(1)
- java基础专栏—CommonApi
- JavaWeb基础—dbutils的简单入门
- java基础专栏—ArrayFrame(2)
- java基础专栏—ArrayFrame(1)
- java基础专栏—java网络编程
- java基础专栏—JDBC
- Java基础学习笔记二十七 DBUtils和连接池
- java基础专栏—DB(1)
- Java基础之DBUtils
- java基础专栏—Exception
- java基础专栏—ThreadSafe
- java基础专栏—IOUtils(4)
- java基础专栏—Thread
- 面试专栏:算法与数据结构,虚拟机,Java基础,JavaWeb
- 【java基础:JDBC】基于DPCP连接池工具包和DBUtils工具包的数据库改查Demonstration
- java基础专栏—IO转换(3)