【JDBC】关于apache的DbUtils的常用方法

4 篇文章 0 订阅

DbUtils

下载地址:apache-DbUtils
DbUtils库是一小类,旨在简化 JDBC的使用。JDBC资源清理代码是普通的,容易出错的工作,因此这些类从代码中抽象出了所有清理任务,从而使您首先有了真正想对JDBC进行的工作:查询和更新数据。

使用DbUtils的一些优点是:

  • 没有资源泄漏的可能性。
  • 更加清晰的持久性代码。
  • 自动从ResultSets填充JavaBean属性。

核心接口

1.DbUtils

举例
提供一些close方法

static void	close(Connection conn)
Close a Connection, avoid closing if null.
static void	close(ResultSet rs)
Close a ResultSet, avoid closing if null.

closeQuietly方法

static void	closeQuietly(Connection conn, Statement stmt, ResultSet rs)
Close a Connection, Statement and ResultSet.

commitAndClose方法

static void	commitAndClose(Connection conn)
Commits a Connection then closes it, avoid closing if null.

loadDriver方法

static boolean	loadDriver(String driverClassName)
Loads and registers a database driver class.

2.QueryRunner

QueryRunner作为重点了解,提供了增删改查等方法以及各种参数重载方式。

  1. 先创建QueryRunner对象,使用对象的query方法
  2. 看文档或源码
    在这里插入图片描述
    选择合适的构造方法然后使用即可

查询代码举例

从数据库中读取图片

    /**
     * 读取用户背景图片
     * 使用dbutils简化操作,用简短的语句实现对数据库的增删改查
     * 同时如果没有自主创建的话,dbutils会自动关闭conn等资源,无需手动释放
     * @return 返回数据库图片二进制数组
     */
    @Override
    public byte[] readCover(String tel) {
        QueryRunner queryRunner = new QueryRunner(dataSource);
        String sql = ("select usercover from person where tel=?");
        Object[] params = {tel};
        byte[] bytes = null;
        try {
            bytes = queryRunner.query(sql, new ScalarHandler<>(), params);
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return bytes;
    }

更新示例

    /**
     * 上传用户个人信息
     *
     * @param person 一个person类
     * @return The number of rows updated.
     */
    @Override
    public int UploadPersonInfo(Person person) {
        QueryRunner queryRunner = new QueryRunner(dataSource);
        String sql = ("UPDATE person set sex = ?,work = ?,location = ?,intro = ? where tel=?");
        //初始化一个num接收返回值
        int num = 0;
        try {
            num = queryRunner.update(sql, person.getSex(), person.getWork(), person.getLocation(), person.getIntro(), person.getTel());
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return num;
    }

返回一个Bean示例

    /**
     * 登录
     * @param user user对象
     * @return 返回一个注册好的user
     */
    @Override
    public User Login(User user) {

        QueryRunner queryRunner = new QueryRunner(dataSource);
        String sql = ("select * from user where tel = ? and password = ?");
        User user1 = null;
        try {
            user1 = queryRunner.query(sql,new BeanHandler<User>(User.class),user.getTel(),user.getPassword());
            RegisterPerson(user.getTel());
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }

        return user1;
    }

3.ResultSetHandler

继承类包括,AbstractKeyedHandler, AbstractListHandler, ArrayHandler, ArrayListHandler, BaseResultSetHandler, BeanHandler, BeanListHandler, BeanMapHandler, ColumnListHandler, KeyedHandler, MapHandler, MapListHandler, ScalarHandler,具体用法可以参照官方文档。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值