DButils工具类库的使用

来源:互联网 发布:淘宝申请全球购的条件 编辑:程序博客网 时间:2024/06/10 09:17

最近在做课程要求做的java web应用,经队友XM的介绍,开始接触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框架学习

1 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 买东西填错地址 但已签收怎么办 网购手机受骗后电话打不通怎么办 淘宝买的东西发错了怎么办 淘宝上买的东西发错了怎么办 淘宝上买的东西发多了怎么办 淘宝上买的东西出现问题怎么办 淘宝买东西未收到货显示签收怎么办 网上一张车票两人同时付款了怎么办 微信付款时显示银行卡被锁定怎么办 微信忘记支付密码怎么办没有银行卡 支付宝赏金扫码支付不行怎么办 网购收货时发现货物已破损怎么办 货物丢失了不承认调查出来了怎么办 小米商城已签收未收到了怎么办 网购的一只荷兰猪现在怎么办 中通快递的掌中通好评怎么办 唯品会快递被签收却没收到货怎么办 拼多多快递签收了但没收到货怎么办 顺丰代收签收成功要强制退款怎么办 淘宝付了钱如果商家没货了怎么办 别人拿走我的货不给钱怎么办 快递出途中损坏签单后才发现怎么办 顾客支付宝少付了钱人走了怎么办 顾客通过收钱码付的钱少了怎么办 寄顺丰快递收件人号码填错了怎么办 京东退货售后说是有划痕怎么办 手机上快递员软件签收错了怎么办 苹果手机进网许可证丢了怎么办 作废的普票发票联丢失怎么办 想退换货但是发票丢了怎么办 快递没有当面验货造成的丢件怎么办 退货卖家收货验货说有问题怎么办 没当着快递人员面验货少货怎么办 微信绑定的银行了被快捷支付怎么办 银行支付到微信支付里的钱怎么办 微信绑定银行忘支付密码忘了怎么办 微信桂林银行不可以支付怎么办 微信忘记支付密码和银行卡号怎么办 京东商城迟迟不通过退货审核怎么办 网上购物想退款商家要我拒收怎么办 运输公司对车主不买保险怎么办