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

全部评论

相关推荐

牛客10001:G了+1,被前端/客户端给捞起来了,不太想面
投递美团等公司6个岗位 美团求职进展汇总
点赞 评论 收藏
分享
03-25 16:22
南华大学 Java
不敢追175女神:你是打了上千个招呼吧?😂
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务