Java 数据库 02 DBUtils

1 DBUtils

1.1 介绍

DBUtils:Apache commons 组件中的一个成员,是JDBC的简化开发工具包,需要导入 commons-dbutils-1.6.jar 包。

三个核心功能:

  • QueryRunner中提供对sql语句操作的API。
  • ResultSetHandler接口,用于定义select操作后,怎样封装结果集。
  • DbUtils类,它就是一个工具类,定义了关闭资源与事务处理的方法。
1.2 QueryRunner实现添加、更新、删除操作

1)创建一个获取数据库连接的工具类


public class JDBCUtils {

    public static final String DRIVERNAME = "com.mysql.jdbc.Driver";
    public static final String URL = "jdbc:mysql://localhost:3306/my_db";
    public static final String USER = "root";
    public static final String PASSWORD = "rootroot";

    static {
        try {
            // 1 注册驱动
            Class.forName(DRIVERNAME);
        } catch (ClassNotFoundException e) {
            System.out.println("数据库驱动注册失败!");
        }
    }

    // 提供获取连接的方法
    public static Connection getConn() throws Exception {
        // 2 获得连接
        Connection conn = DriverManager.getConnection(URL, USER, PASSWORD);
        // 返回连接
        return conn;
    }
}

2)插入数据

public static void main(String[] args) throws Exception  {

    // 1 获取一个用来执行SQL语句的对象
    QueryRunner queryRunner=new QueryRunner();

    String sql="insert into zhangwu(name,money,parent) values(?,?,?)";

    Object[] params= {"股票收入",5500,"收入"};

    Connection connection=JDBCUtils.getConn();
    // 2 对数据库进行操作
    int line=queryRunner.update(connection, sql, params);
    // 3 结果集处理
    System.out.println("line= "+line);

}

3)更新数据

public static void main(String[] args) throws Exception  {

    // 1 获取一个用来执行SQL语句的对象
    QueryRunner queryRunner=new QueryRunner();
    String sql="update zhangwu set money = money+1000 where name=?";        
    Object[] params= {"股票收入"};
    Connection connection=JDBCUtils.getConn();
    // 2 对数据库进行操作
    int line=queryRunner.update(connection, sql, params);
    // 3 结果集处理
    System.out.println("line= "+line);

}

4)删除数据

public static void main(String[] args) throws Exception  {

    // 1 获取一个用来执行SQL语句的对象
    QueryRunner queryRunner=new QueryRunner();
    String sql="delete from zhangwu where name=?";      
    Object[] params= {"股票收入"};
    Connection connection=JDBCUtils.getConn();
    // 2 对数据库进行操作
    int line=queryRunner.update(connection, sql, params);
    // 3 结果集处理
    System.out.println("line= "+line);

}
1.3 QueryRunner实现查询操作

1)JavaBean

JavaBean就是一个类,在开发中常用来封装数据。

特性:

  • 需要实现接口:java.io.Serializable ,通常实现接口这步骤省略了,不会影响程序。
  • 提供私有字段:private 类型 字段名;
  • 提供getter/setter方法
  • 提供无参构造
public class ZhangWu {

    private int id;
    private String name;
    private double money;
    private String parent;

    public ZhangWu() {
        super();
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getMoney() {
        return money;
    }

    public void setMoney(double money) {
        this.money = money;
    }

    public String getParent() {
        return parent;
    }

    public void setParent(String parent) {
        this.parent = parent;
    }

    @Override
    public String toString() {
        return "ZhangWu [id=" + id + ",name=" + name + ",money=" + money + ",parent=" + parent + "]";
    }
}
1.3.1 ArrayHandler & ArrayListHandler

1)ArrayHandler:将结果集中的第一条记录封装到一个Object[]数组中,数组中的每一个元素就是这条记录中的每一个字段的值。

public static void main(String[] args) throws Exception  {

    // 1 获取一个用来执行SQL语句的对象
    QueryRunner queryRunner=new QueryRunner();
    // 2 SQL语句
    String sql="select * from zhangwu";     
    Object[] params= {};
    // 3 获取数据库连接
    Connection connection=JDBCUtils.getConn();
    // 4 对数据库进行操作
    Object[] objArray=queryRunner.query(connection, sql, new ArrayHandler(),params);
    // 5 结果集处理
    System.out.println(Arrays.toString(objArray));
    // 6 关闭资源
    connection.close();

}

2)ArrayListHandler:将结果集中的每一条记录都封装到一个Object[]数组中,将这些数组在封装到List集合中。

public static void main(String[] args) throws Exception {

    // 1 获取一个用来执行SQL语句的对象
    QueryRunner queryRunner = new QueryRunner();
    // 2 SQL语句
    String sql = "select * from zhangwu where money>?";
    Object[] params = { 2000 };
    // 3 获取数据库连接
    Connection connection = JDBCUtils.getConn();
    // 4 对数据库进行操作
    java.util.List<Object[]> list = queryRunner.query(connection, sql, new ArrayListHandler(), params);
    // 5 结果集处理
    for (Object[] objArray : list) {
        System.out.println(Arrays.toString(objArray));
    }
    // 6 关闭资源
    connection.close();

}
1.3.2 BeanHandler & BeanListHandler

1)BeanHandler :将结果集中第一条记录封装到一个指定的JavaBean中。

public static void main(String[] args) throws Exception {

    // 1 获取一个用来执行SQL语句的对象
    QueryRunner queryRunner = new QueryRunner();
    // 2 SQL语句
    String sql = "select * from zhangwu";
    Object[] params = {};
    // 3 获取数据库连接
    Connection connection = JDBCUtils.getConn();
    // 4 对数据库进行操作
    ZhangWu zWu=queryRunner.query(connection, sql, new BeanHandler<ZhangWu>(ZhangWu.class),params);
    // 5 结果集处理
    System.out.println(zWu);
    // 6 关闭资源
    connection.close();

}

2)BeanListHandler:将结果集中每一条记录封装到指定的javaBean中,将这些javaBean在封装到List集合中。

public static void main(String[] args) throws Exception {

    // 1 获取一个用来执行SQL语句的对象
    QueryRunner queryRunner = new QueryRunner();
    // 2 SQL语句
    String sql = "select * from zhangwu";
    Object[] params = {};
    // 3 获取数据库连接
    Connection connection = JDBCUtils.getConn();
    // 4 对数据库进行操作
    java.util.List<ZhangWu> list=queryRunner.query(connection, sql, new BeanListHandler<ZhangWu>(ZhangWu.class),params);
    // 5 结果集处理
    for (ZhangWu zhangWu : list) {
        System.out.println(zhangWu);
    }
    // 6 关闭资源
    connection.close();

}
1.3.3 ColumnListHandler & ScalarHandler

1)ColumnListHandler:将结果集中指定的列的字段值,封装到一个List集合中。

public static void main(String[] args) throws Exception {

    // 1 获取一个用来执行SQL语句的对象
    QueryRunner queryRunner = new QueryRunner();
    // 2 SQL语句
    String sql = "select name from zhangwu";
    Object[] params = {};
    // 3 获取数据库连接
    Connection connection = JDBCUtils.getConn();
    // 4 对数据库进行操作
    java.util.List<String> list=queryRunner.query(connection, sql, new ColumnListHandler<String>(),params);
    // 5 结果集处理
    for (String string : list) {
        System.out.println(string);
    }
    // 6 关闭资源
    connection.close();

}

2)ScalarHandler:它是用于单数据。例如select count(*) from 表操作。

public static void main(String[] args) throws Exception {

    // 1 获取一个用来执行SQL语句的对象
    QueryRunner queryRunner = new QueryRunner();
    // 2 SQL语句
    String sql = "select MAX(money) from zhangwu";
    Object[] params = {};
    // 3 获取数据库连接
    Connection connection = JDBCUtils.getConn();
    // 4 对数据库进行操作
    Double dd=queryRunner.query(connection, sql, new ScalarHandler<Double>(),params);
    // 5 结果集处理
    System.out.println(dd);
    // 6 关闭资源
    connection.close();

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值