09 dbutil 使用

JdbcUtil的改进(c3p0的使用)

public class JdbcUtil {
    //一个数据库只需要一个连接池对象,所以使用static 
    private static DataSource ds  = new ComboPooledDataSource(); 
    
    /**
     * 获取连接池对象方法
     */
    public static DataSource getDataSource(){
        return ds;
    }
    
    /**
     * 获取连接对象
     */
    public static Connection getConnection(){
        try {
            return ds.getConnection();
        } catch (SQLException e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }
    }
    
    //关闭顺序为ResultSet Statement Connection
    public static void close(Connection conn,Statement st){
        try {
            if (st!=null)
                st.close();
            if (conn!=null)
                conn.close();//如今的close是把连接对象放回连接池中
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
    }
    
    public static void close(Connection conn,Statement st,ResultSet rs){
        
        try {
            if (rs!=null)
                rs.close();
            close(conn,st);
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
    }
}

1. 导包

Paste_Image.png

2. update()的使用

public static void main(String[] args) {
        QueryRunner qr = new QueryRunner(JdbcUtil.getDataSource());
        
        try {
            qr.update("insert into employee values(?,?,?,?,?,?)", new Object[]{null,"dd",22,"贵州","13123225786","男"});
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

3. query()的使用

public class Demo2 {

    public static void main(String[] args) {
        QueryRunner qr = new QueryRunner(JdbcUtil.getDataSource());
        
        /**
         * ResultSetHandler接口: 用于把结果集封装成不同类型的对象
         *  ArrayHandler类: 把结果集的第一行结果封装成对象数组 
         *  ArrayListHandler类: 把结果集的每一行结果封装成对象数组,把每个对象数组放入List集合中
         *  BeanHandler类: 把结果集的第一行,封装成javabean对象(常用)
         *  BeanListHandler类: 把结果集的每行封装成javabean,把每个javabean放入List集合中(常用)
         *  ScalarHandler类:查询聚合函数(例如:count(*))  (常用)
         */
        //t1(qr);
        
        
        //t2(qr);
        
        //t3(qr);

        //t4(qr);
        
        try {
            long count = (Long)qr.query("select count(*) from student", new ScalarHandler(), new Object[]{});
            System.out.println(count);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static void t4(QueryRunner qr) {
        try {
            List<Student> stu= (List<Student>)qr.query("select * from student", new BeanListHandler(Student.class), new Object[]{});
            for (Student student : stu) {
                System.out.println(student);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static void t3(QueryRunner qr) {
        try {
            Student stu= (Student)qr.query("select * from student where id=?", new BeanHandler(Student.class), new Object[]{1});//获取第一个bean对象
            System.out.println(stu);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static void t2(QueryRunner qr) {
        try {
            List<Object[]> values = (List<Object[]>)qr.query("select * from student", new ArrayListHandler(), new Object[]{});
            for (Object[] arr : values) {//行
                for (Object object : arr) {
                    System.out.print(object+"\t");
                }
                System.out.println();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static void t1(QueryRunner qr) {
        try {
            Object[] values = (Object[])qr.query("select * from student", new ArrayHandler(), new Object[]{});
            for (Object object : values) {
                System.out.println(object);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    
    
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. 简介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的...
    笨鸟慢飞阅读 11,165评论 0 4
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,737评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,791评论 25 709
  • 你知道吗?在这个世界上,有多少人不知为什么要活着?他们活着,不为任何人,也不为自己,只是因为他们能活着,可以活得...
    三炮英雄阅读 3,446评论 0 1
  • 关于长篇其实很久之前就想写了,但一直苦于没有思路跟定力,去年冬天的时候尝试着写了一次,写着写着逻辑就跟不上了,最后...
    韩长生阅读 1,872评论 0 0