1. 程式人生 > 其它 >【資料庫程式設計】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();
}

執行結果為:

4. 表與JavaBean的型別對映關係

JavaBean
int Integer
double Double
char String
varchar String
date Date或String
  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();
}

執行結果為:

4. 表與JavaBean的型別對映關係

JavaBean
int Integer
double Double
char String
varchar String
date Date或String