DBUntils结果处理

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;
    }
}

猜你喜欢

转载自blog.csdn.net/qq_31702655/article/details/105282593