欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

DBUtils工具类学习一

程序员文章站 2022-04-28 14:15:40
Commons DbUtils是Apache组织提供的一个对JDBC进行简单封装的开源工具类库,使用它能够简化JDBC应用程序的开发,同时也不会影响程序的性能 1、特征 DBUtils是java编程中的数据库操作实用工具,小巧简单实用, 1.对于数据表的读操作,他可以把结果转换成List,Array ......

commons dbutils是apache组织提供的一个对jdbc进行简单封装的开源工具类库,使用它能够简化jdbc应用程序的开发,同时也不会影响程序的性能

1、特征

dbutils是java编程中的数据库操作实用工具,小巧简单实用,
1.对于数据表的读操作,他可以把结果转换成list,array,set等java集合,便于程序员操作;
2.对于数据表的写操作,也变得很简单(只需写sql语句)
3.可以使用数据源,使用jndi,数据库连接池等技术来优化性能--重用已经构建好的数据库连接对象,而不像php,asp那样,费时费力的不断重复的构建和析构这样的对象。

2、dbutils提供了三个核心的功能

2.1queryrunner中提供对sql语句操作的api

queryrunner(datasource ds),提供数据源(连接池),dbutils底层自动维护了连接connection
update(string sql, object...params),执行更新数据
query(string sql,resultsethandler rsh,object... params),执行查询

2.2 resultsethandler接口,用于定义select操作后,怎样封装结果集

arrayhandler:将结果集中的第一条记录封装到object[]数组中,数组中的每一个元素即使这条记录中的每一个字段的值
arraylisthandler:将结果集中的每一条记录封装到object[]数组中,将这些数组再封装到list集合中
beanhandler:将结果集中的第一条记录封装到一个指定的javabean中
beanlisthandler:将结果集中每一条记录封装到javabean中,将这些javabean再封装到list集合中
columnlisthandler:将结果集中指定列的字段值封装到一个list集合中
keyedhandler:将结果集中的每一条记录封装到map<string,object>,再讲这个map集合作为另一个map的value,另一个map集合的key是指定的字段的值
maphandler:将结果集中的第一条记录封装到map<string,object>集合中,key就是字段名称,value就是字段的值
maplisthandler:将结果集中的每一条记录封装到map<string,object>集合中,key就是字段名称,value就是字段的值,再将这些map封装到list集合中
scalarhandler:它是用于单数据,列如:select count(1) from 表操作

2.3 dbutils类,就是一个工具类,定义了关闭资源和事务处理的方法

closequietly(connetion conn)关闭连接,有异常就会抛出
commitandclosequietly(connetion conn):提交并关闭连接
rollbackandclosequietly(connetion conn):回滚并关闭连接

3、dbutils操作代码demo

DBUtils工具类学习一

3.1maven依赖

<dependency>
            <groupid>mysql</groupid>
            <artifactid>mysql-connector-java</artifactid>
            <version>5.1.44</version>
        </dependency>
        <dependency>
            <groupid>com.mchange</groupid>
            <artifactid>c3p0</artifactid>
            <version>0.9.5</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/commons-dbutils/commons-dbutils -->
        <dependency>
            <groupid>commons-dbutils</groupid>
            <artifactid>commons-dbutils</artifactid>
            <version>1.7</version>
        </dependency>

3.2querydbutils代码

package com.rookie.bigdata.dbutils;

import com.rookie.bigdata.domain.user;
import com.rookie.bigdata.util.c3p0utils;
import org.apache.commons.dbutils.queryrunner;
import org.apache.commons.dbutils.handlers.beanhandler;
import org.apache.commons.dbutils.handlers.beanlisthandler;
import org.apache.commons.dbutils.handlers.scalarhandler;

import java.sql.sqlexception;
import java.util.list;

/**
 * created by dell on 2019/5/24.
 */
public class querydbutils {

    public static void main(string[] args) {
        //insertmethod();
        //updatemethod();
        //deletemethod();
        //selectallusermethod();
        //selectusermethod();
        try {
            queryrunner qr = new queryrunner(c3p0utils.getdatasource());
            string sql = "select count(*) from user ";
           long count=(long)qr.query(sql, new scalarhandler());
            system.out.println(count);
        } catch (exception e) {
            e.printstacktrace();
        }

    }

    //查询单个用户方法
    private static void selectusermethod() {
        try {
            queryrunner qr = new queryrunner(c3p0utils.getdatasource());
            string sql = "select * from user where username=?";
            object[] params = {"李四"};
            user user = qr.query(sql, new beanhandler<user>(user.class), params);

            system.out.println(user);
        } catch (exception e) {
            e.printstacktrace();
        }
    }

    //查询所有的用户信息
    private static void selectallusermethod() {
        try {
            queryrunner qr = new queryrunner(c3p0utils.getdatasource());
            string sql = "select * from user";
            list<user> userlist = qr.query(sql, new beanlisthandler<user>(user.class));

            for (user user : userlist) {
                system.out.println(user);
            }
        } catch (exception e) {
            e.printstacktrace();
        }
    }

    //删除操作
    private static void deletemethod() {
        try {
            queryrunner qr = new queryrunner(c3p0utils.getdatasource());
            string sql = "delete from user where username=?";
            object[] params = {"李四"};
            int update = qr.update(sql, params);
            system.out.println("删除了" + update + "记录");
        } catch (exception e) {
            e.printstacktrace();
        }
    }

    //更新记录操作
    private static void updatemethod() {
        try {
            queryrunner qr = new queryrunner(c3p0utils.getdatasource());
            string sql = "update user set password=? where username=?";
            object[] params = {"654321", "李四"};
            int update = qr.update(sql, params);
            system.out.println("更新了" + update + "记录");
        } catch (exception e) {
            e.printstacktrace();
        }
    }

    /**
     * 查询操作
     */
    private static void insertmethod() {
        try {
            // 1.创建核心类queryrunner
            queryrunner qr = new queryrunner(c3p0utils.getdatasource());
            // 2.编写sql语句
            string sql = "insert into user values(?,?)";
            // 3.为站位符设置值
            object[] params = {"李四", "123456"};
            // 4.执行添加操作
            int rows = qr.update(sql, params);
            system.out.println("添加成功!" + rows);
        } catch (sqlexception e) {
            // todo auto-generated catch block
            e.printstacktrace();
        }
    }
}

c3p0utils.java

package com.rookie.bigdata.util;

import com.mchange.v2.c3p0.combopooleddatasource;

import javax.sql.datasource;
import java.sql.connection;
import java.sql.preparedstatement;
import java.sql.resultset;
import java.sql.sqlexception;

/**
 * created by dell on 2019/5/23.
 */
public class c3p0utils {
    private static combopooleddatasource datasource = new combopooleddatasource("mysql");

    public static datasource getdatasource() {
        return datasource;
    }

    public static connection getconnection() {
        try {
            return datasource.getconnection();
        } catch (sqlexception e) {
            throw new runtimeexception(e);
        }
    }

    //释放连接回连接池
    public static void close(connection conn, preparedstatement pst, resultset rs) {
        if (rs != null) {
            try {
                rs.close();
            } catch (sqlexception e) {
                e.printstacktrace();
            }
        }
        if (pst != null) {
            try {
                pst.close();
            } catch (sqlexception e) {
                e.printstacktrace();
            }
        }

        if (conn != null) {
            try {
                conn.close();
            } catch (sqlexception e) {
                e.printstacktrace();
            }
        }
    }
}

user.java

package com.rookie.bigdata.domain;

/**
 * created by dell on 2019/5/25.
 */
public class user {
    private string username;
    private string password;

    public string getusername() {
        return username;
    }

    public void setusername(string username) {
        this.username = username;
    }

    public string getpassword() {
        return password;
    }

    public void setpassword(string password) {
        this.password = password;
    }

    @override
    public string tostring() {
        return "user{" +
                "username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}