C/C++教程

【数据库编程】8.Apache-DBUtils

本文主要是介绍【数据库编程】8.Apache-DBUtils,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1. 基本介绍

  1. commons-dbutils是Apache组织提供的一个开源JDBC工具类,它是对JDBC的封装,使用DBUtils可以极大简化jdbc编码的工作量。
  2. DBUtils类
    • QueryRunner类:该类封装了SQL的执行,是线程安全的。可以实现增、删、改、查、批处理。
    • ResultSetHandler接口:用于处理java.sql.ResultSet,将数据按要求转换为另一种形式。

2.ResultSetHandler子类

  1. ArrayHandler:把结果集中的第一行数据转换成对象数组。
  2. ArrayListHandler:把结果集中的每一行数据都转成一个数组,再存放到List中。
  3. BeanHandler:把结果集中的第一行数据封装到一个对应的JavaBean实例中。
  4. BeanListHandler:把结果集中的每一行数据都封装到每个对应的JavaBean实例中,存放到List里。
  5. ColumnListHandler:将结果集中某一列的数据存放到List中。
  6. KeyedHandler:将结果集中的每行数据都封装到Map里,再把这些Map再存放到一个Map里,其key为指定的key。
  7. MapHandler:将结果集中的第一行数据封装到一个Map里,key是列名,value就是对应的值。
  8. MapListHandler:将结果集中的每一行数据都封装到每个Map里,然后再存放到List中。

3. 使用案例

首先创建一个表和与之对应的Bean类,表结构代码如下:

CREATE TABLE `demo` (
	`id` int(11) DEFAULT NULL,
	`name` varchar(32) DEFAULT NULL
) ENGINE = InnoDB CHARSET = utf8;

INSERT INTO demo
VALUES (1, 'alan1'),
	(2, 'alan2'),
	(3, 'alan3'),
	(4, 'alan4'),
	(5, 'alan5');

Bean类代码如下:

public class Demo {
    private Integer id;
    private String name;

    public Demo() {
    }

    public Demo(Integer id, String name) {
        this.id = id;
        this.name = name;
    }

    public Integer getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

    @Override
    public String toString() {
        return "Demo{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }
}

之后编写Java代码,使用DBUtils查询id大于2的所有记录,代码如下:

@Test
public void testDBUtils() throws Exception {
    // 读取配置并获得连接
    Properties properties = new Properties();
    properties.load(new FileInputStream("src\\druid.properties"));
    DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);
    Connection connection = dataSource.getConnection();

    QueryRunner queryRunner = new QueryRunner();
    String sql = "select * from demo where id > ?";
    // 执行SQL
    List<Demo> list = queryRunner.query(connection, sql, new BeanListHandler<>(Demo.class), 2);
    for (Demo demo : list) {
        System.out.println(demo);
    }
    connection.close();
}

运行结果为:

image-20210812161259901

4. 表与JavaBean的类型映射关系

JavaBean
int Integer
double Double
char String
varchar String
date Date或String
这篇关于【数据库编程】8.Apache-DBUtils的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!