package com.cskaoyan.JDBCDemo;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import org.apache.commons.dbutils.DbUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.*;
import org.junit.Test;
import javax.sql.DataSource;
import java.io.FileReader;
import java.sql.SQLException;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Properties;
public class ResultSetDemo {
/**
* ArryHandler :把结果的第一行数据转成对象数组
*/
@Test
public void testArrHandler() throws Exception {
QueryRunner queryRunner = new QueryRunner(getDataSource());
String sql = "select * from user";
Object arr[] = queryRunner.query(sql,new ArrayHandler());
System.out.println(Arrays.toString(arr));
}
/**
* ArrListHandler :把结果集中的每一行数据都转成一个数组,再存放到List中。
*/
@Test
public void testArrListHandler() throws Exception {
QueryRunner queryRunner = new QueryRunner(getDataSource());
String sql = "select * from user";
List<Object[]> arr = queryRunner.query(sql,new ArrayListHandler());
for (Object[] obj :
arr) {
System.out.println(Arrays.toString(obj));
}
}
/**
* BeanHandler : 将结果集中的第一行数据封装到一个对应的JavaBean实例中。
* 使用 BeanHandler 和 BeanListHandler 需要注意以下几点:
*
* 1. 对应的 JavaBean 必须提供无参构造方法。
* 2. JavaBean 的属性名应该和返回结果的字段名相同。
* 3. JavaBean 中必须提供公共的 Setter 方法。
*/
@Test
public void testBeanHandler() throws Exception {
QueryRunner queryRunner = new QueryRunner(getDataSource());
String sql = "select * from t_user";
User user = queryRunner.query(sql, new BeanHandler<>(User.class));
System.out.println(user);
}
/**
* BeanListHandler:将结果集中的每一行数据都封装到一个对应的JavaBean实例中,存放到List里。
*/
@Test
public void tetsBeanListHandler() throws Exception {
QueryRunner queryRunner = new QueryRunner(getDataSource());
String sql = "select * from user";
List<User> users = queryRunner.query(sql, new BeanListHandler<>(User.class));
for (User user :
users) {
System.out.println(user);
}
}
/**
* ColumnListHandler:将结果集中某一列的数据存放到List中。
*/
@Test
public void testColumListHandler() throws Exception {
QueryRunner queryRunner = new QueryRunner(getDataSource());
String sql = "select username from user";
//因为username是varchar 所以存放string
List<String> users = queryRunner.query(sql, new ColumnListHandler<String>());
for (String name :
users) {
System.out.println(name);
}
}
/**
* KeyedHandler(name):将结果集中的每一行数据都封装到一个Map里,
* 再把这些map再存到一个map里,其key为指定的key。
*/
@Test
public void testKyeHandler() throws Exception {
QueryRunner queryRunner = new QueryRunner(getDataSource());
String sql = "select * from user";
Map<Integer, Map<String, Object>> query =
queryRunner.query(sql, new KeyedHandler<Integer>("id"));
System.out.println(query);
}
/**
* 关闭连接
*/
/**
* 获取数据源
* @return 数据源
*/
private DataSource getDataSource() throws Exception {
//加载配置文件
Properties info = new Properties();
javax.sql.DataSource dataSource = null;
FileReader reader = new FileReader("druid.properties");
info.load(reader);
//创建数据源
dataSource = DruidDataSourceFactory.createDataSource(info);
return dataSource;
}
}
DBUntils结果处理
最新推荐文章于 2023-02-12 13:15:19 发布