DButils工具类库的使用
2015-10-29 23:17
351 查看
最近在做课程要求做的java web应用,经队友XM的介绍,开始接触DButils这个工具类库,没接触这个之前觉得牵扯到数据库的一句一句的写也没那么麻烦,但用过这之后真心感觉,之前我干嘛那么累自己,所有工作一切搞定。下面是我在写的过程中经常用到的一些方法,留着自己哪天忘了回忆一下。
其API:
org.apache.commons.dbutils.QueryRunner
org.apache.commons.dbutils.ResultSetHandler
工具类:
org.apache.commons.dbutils.DbUtils
query执行select操作
update执行update、insert、delete操作操作
执行一个查询操作,在这个查询中,对象数组中的每个元素值被用来作为查询语句的置换参数。该方法会自行处理 PreparedStatement 和 ResultSet 的创建和关闭。
public Object query(String sql, Object[] params, ResultSetHandler rsh) throws SQLException
几乎与第一种方法一样;唯一的不同在于它不将数据库连接提供给方法,并且它是从提供给构造方法的数据源(DataSource) 或使用的setDataSource 方法中重新获得 Connection。
public Object query(Connection conn, String sql, ResultSetHandler rsh) throws SQLException
执行一个不需要置换参数的查询操作。
public int update(Connection conn, String sql, Object[] params) throws SQLException
用来执行一个更新(插入、更新或删除)操作。
public int update(Connection conn, String sql) throws SQLException
用来执行一个不需要置换参数的更新操作。
ArrayListHandler:把结果集中的每一行数据都转成一个数组,再存放到List中。
BeanHandler:将结果集中的第一行数据封装到一个对应的JavaBean实例中。
BeanListHandler:将结果集中的每一行数据都封装到一个对应的JavaBean实例中,存放到List里。
ColumnListHandler:将结果集中某一列的数据存放到List中。
KeyedHandler(name):将结果集中的每一行数据都封装到一个Map里,再把这些map再存到一个map里,其key为指定的key。
MapHandler:将结果集中的第一行数据封装到一个Map里,key是列名,value就是对应的值。
MapListHandler:将结果集中的每一行数据都封装到一个Map里,然后再存放到List
投诉dao
Imp
这有一篇介绍DButils特别详细的博客,留着看
javaweb学习总结(四十一)——Apache的DBUtils框架学习
关于Commons-DButils
Commons-DButils是Apache组织提供的一个开源的JDBC工具类库,它对JDBC进行了简单的封装,学习起来很简单, 而且大大的简化了工作量,关于数据库的操作一般一两句就可以解决问题了,并且不会影响程序的性能。其API:
org.apache.commons.dbutils.QueryRunner
org.apache.commons.dbutils.ResultSetHandler
工具类:
org.apache.commons.dbutils.DbUtils
QueryRunner类使用
其主要功能用来做数据库的查询(select、update、delete、insert),简化了查询的操作query执行select操作
update执行update、insert、delete操作操作
QueryRuner类的主要方法
public Object query(Connection conn, String sql, Object[] params, ResultSetHandler rsh) throws SQLException:执行一个查询操作,在这个查询中,对象数组中的每个元素值被用来作为查询语句的置换参数。该方法会自行处理 PreparedStatement 和 ResultSet 的创建和关闭。
public Object query(String sql, Object[] params, ResultSetHandler rsh) throws SQLException
几乎与第一种方法一样;唯一的不同在于它不将数据库连接提供给方法,并且它是从提供给构造方法的数据源(DataSource) 或使用的setDataSource 方法中重新获得 Connection。
public Object query(Connection conn, String sql, ResultSetHandler rsh) throws SQLException
执行一个不需要置换参数的查询操作。
public int update(Connection conn, String sql, Object[] params) throws SQLException
用来执行一个更新(插入、更新或删除)操作。
public int update(Connection conn, String sql) throws SQLException
用来执行一个不需要置换参数的更新操作。
ResultSetHandler接口使用
这个的使用主要是比如我select*了,返回的是一大堆数据对吧,要放在List中,它就是用来解决这个问题的。ResultSetHandler接口的实现类
ArrayHandler:把结果集中的第一行数据转成对象数组。ArrayListHandler:把结果集中的每一行数据都转成一个数组,再存放到List中。
BeanHandler:将结果集中的第一行数据封装到一个对应的JavaBean实例中。
BeanListHandler:将结果集中的每一行数据都封装到一个对应的JavaBean实例中,存放到List里。
ColumnListHandler:将结果集中某一列的数据存放到List中。
KeyedHandler(name):将结果集中的每一行数据都封装到一个Map里,再把这些map再存到一个map里,其key为指定的key。
MapHandler:将结果集中的第一行数据封装到一个Map里,key是列名,value就是对应的值。
MapListHandler:将结果集中的每一行数据都封装到一个Map里,然后再存放到List
实现举例
是一些自己正在做的东西的例子,以投诉为例投诉dao
package com.book.buy.dao; import com.book.buy.vo.ComplainVo; import java.sql.SQLException; import java.util.List; /** * Created by violet on 15/10/27. */ public interface ComplainDao{ public void addComp(ComplainVo comp) throws SQLException; public List<ComplainVo> getAllComp() throws SQLException; public List<ComplainVo> getCompByUserid(int uid) throws SQLException; public List<ComplainVo> getCompByState(int state) throws SQLException; public void close(); }
Imp
package com.book.buy.daoImp; import com.book.buy.dao.ComplainDao; import com.book.buy.utils.DBUtils; import com.book.buy.vo.ComplainVo; import org.apache.commons.dbutils.QueryRunner; import org.apache.commons.dbutils.handlers.BeanListHandler; import java.sql.Connection; import java.sql.SQLException; import java.util.List; /** * Created by violet on 2015/10/28. */ public class ComplainImp implements ComplainDao { private QueryRunner runner = null; private Connection conn = null; public ComplainImp(){ runner = new QueryRunner(); conn = DBUtils.getConnection(); } @Override public void addComp(ComplainVo comp) throws SQLException { String sql = "insert into complain(userID, description) values(?, ?)"; runner.update(conn, sql, comp.getUserid(), comp.getDescription()); } @Override public List<ComplainVo> getAllComp() throws SQLException { String sql = "select userID, description, state from complain"; return runner.query(conn, sql, new BeanListHandler<ComplainVo>(ComplainVo.class)); } @Override public List<ComplainVo> getCompByUserid(int uid) throws SQLException { String sql = "select userID, description, state from complain where userID = ?"; return runner.query(conn, sql, new BeanListHandler<ComplainVo>(ComplainVo.class), uid); } @Override public List<ComplainVo> getCompByState(int state) throws SQLException { String sql = "select userID, description, state from complain where state = ?"; return runner.query(conn, sql, new BeanListHandler<ComplainVo>(ComplainVo.class), state); } @Override public void close() { try { if (conn != null) conn.close(); } catch (SQLException e) { e.printStackTrace(); } } }
这有一篇介绍DButils特别详细的博客,留着看
javaweb学习总结(四十一)——Apache的DBUtils框架学习
相关文章推荐
- 网络访问之json数据解析
- 06-图3 六度空间
- HTTP请求和数据安全
- LeetCode13:Roman to Integer
- 用户及权限
- CC2541 OSAL小结
- hadoop自定义排序
- 关于编码风格
- 想干掉互联网公司, 那你必需....
- KD树 (k-Dimension tree)
- 【跟我学apache-commons】【四】commons-io的使用
- String,StringBuffer和StringBuilder的区别
- SRVCC流程
- 嵌入式 boa服务器移植
- android studio 版本控制 .gitignore 文件配置 &&移除已上传到git的不需版本控制的文件
- JS中,如何查询一个对象的所有属性
- UriMatcher uri选择器
- 一种高效双端队列(链表)实现方式
- 29.Android 传感器
- 产品运营:5种活动类型,如何运营