第三方jar包的

连接池的作用?
Java 为了解决 频繁创建数据库链接和释放数据库链接的这个问题创建了连接池

可以操作 JDBC 链接数据库 并且 执行SQL语句 处理返回的结果集

三个核心类:

/* 1.DbUtls   
 * 一些关闭资源的方法  (安静的关闭  不用异常处理)

 *2.QueryRunner  
 *执行SLQ语句 并且返回你想要的结果集 
 *
 *3.参数 ResultSetHandler 
 *这个参数 是个接口 (使用实现类 想要什么结果集 就传入什么,该接口的实现类) 
 */
public class Demo01 {
          public static void main(String[] args) throws SQLException{
            //fun();
              //更新
              QueryRunner qr = new QueryRunner();
              Connection connection = JDBCUtil.getConnection();
              //使用占位符传入sql语句
              String sql = "update sort set sname=?"+ ",sprice=?,sdesc=? where sid=5";
              //  多参数参数 传入方式1
              //利用数组  
              //方式2
              //直接传递参数  注意要和 占位符问号的顺序 对应
              Object [] params = {"咖啡",10000,"java中的咖啡"};
              int row = qr.update(connection, sql,"咖啡1",12000,"java中的咖啡1" );
              if (row>0) {
                  System.out.println("修改成功");
            }
              DbUtils.closeQuietly(connection);
        }

        private static void fun() throws SQLException {
            // 插入一条数据使用QueryRunner
              QueryRunner qr = new QueryRunner();
              //获取链接
              Connection connection = JDBCUtil.getConnection();
              //插入数据数据库语句
              String sql = "insert into sort values(null,'显示器',5,'这是一台播放家教的显示器')";
              //插入数据方法
              int row = qr.update(connection, sql);
              if (row>0) {
                System.out.println("插入成功");
            }
              //安静的关闭资源
              DbUtils.closeQuietly(connection);
        }
}

查询操作,8个结果集

        /* 1.结果集第一种处理方法 ArrayHandler  是 ResultSetHandler 子集
         *  ArrayHandler
         * 把查询出来的数据第一行  放进对象数据中  并返回
         */
public class Demo02 {
        @Test
        public void select1() throws SQLException {
                QueryRunner qr = new QueryRunner();
                Connection connection = JDBCUtil.getConnection();
                String sql = "select*from sort";
                //调用查询  方法
                //传入什么容器  该类就把数据放到什么容器中   给你返回.
    Object[] objects = qr.query(connection, sql, new ArrayHandler());
    for (Object object : objects) {
                System.out.println(object);
    }
    DbUtils.closeQuietly(connection);
            }

        /* 2. 结果集的第二种处理方法     ArrayListHandler    是ResultSetHandler 子集
         * 将结果集中的每一行  都封装到  对象 数组中 出现很多对象数组   对象数组存储到List 集合
         * 
         * 查询每一条记录  放到List集合中  
         * 每一条记录 是一个对象
         */
        @Test
        public void select2() throws SQLException {
            QueryRunner qr  = new QueryRunner();
            Connection connection = JDBCUtil.getConnection();
            String sql = "select *from sort";

            List<Object[]> query = qr.query(connection, sql,  new ArrayListHandler());
            for (Object[] objects : query) {
                for (Object object : objects) {
                    System.out.println(object);
                }

            }
            DbUtils.closeQuietly(connection);
        }
        /*3. 结果集的第三种处理方法   BeanHangler
         * 把结果集的第一行封装成 一个 javaBean 对象
         * 
         * JavaBean  对象的规则
         * 1.成员变量私有化
         * 2.提供空参的构造方法
         * 3.提供set/get方法
         * 符合以上规则的实体类 创建出来的对象
         * 就是一个JavaBean 对象
         */
            @Test
            public void  select3() throws SQLException  {
                    QueryRunner qr = new QueryRunner();
                    Connection connection = JDBCUtil.getConnection();
                    String   sql = "select*from sort"; 
                //要使用哪个 javabean 实体类传进去
                //类型.class
                    Srot srot = qr.query(connection, sql, new BeanHandler<>(Srot.class));
                    if (srot==null) {
                        System.out.println("没有该条数据");
                    }
                    System.out.println(srot);
                    DbUtils.closeQuietly(connection);           
            }

            /* 4. 结果集的第四种处理方法 BeanListHangler
             *  重要 常用  !!!!
             * 
             * 
             */
                @Test
                public void select4() throws SQLException {
                    QueryRunner qr = new QueryRunner();
                    Connection connection = JDBCUtil.getConnection();
                    String sql = "select*from sort";

                    List<Srot> list = qr.query(connection, sql, new BeanListHandler<>(Srot.class));
                    for (Srot srot : list) {
                        System.out.println(srot);
                    }
                    DbUtils.close(connection);
                }

                /*5. 结果集的第五种处理方法 ColumnListHandler
                 * 
                 * 结果集, 指定列的数据 ,存储到List集合
                 * 
                 * 返回指定列的数据 放在list 中返回
                 */
                @Test
                public void select5() throws SQLException {
                    QueryRunner qr = new QueryRunner();
                    Connection connection = JDBCUtil.getConnection();
                    String sql = "select*from sort";

                    List<Object> list = qr.query(connection, sql, new ColumnListHandler<>("sname"));
                    for (Object object : list) {
                        System.out.println(object);
                    }

                    DbUtils.close(connection);
                }
                /*6. ScalarHandler
                 * 结果集第六种处理方法 , ScalarHandler
                 * 对于查询后, 只有一个结果
                 * 查询 结果是一个的时候 使用的 
                 */
                @Test
                public void select6() throws SQLException {
                    QueryRunner qr = new QueryRunner();
                    Connection connection = JDBCUtil.getConnection();
                    String sql = "select count(*) from sort";
                     Object query = qr.query(connection, sql, new ScalarHandler<>());
                    System.out.println(query);

                    DbUtils.closeQuietly(connection);
                }
                /*7. MapHandler 
                 * 结果集第七种处理方法  MapHandler 
                 * 将结果集第一行数据 封装到Map集合中
                 * 
                 */
                @Test
                public void select7() throws SQLException {
                    QueryRunner qr = new QueryRunner();
                    Connection connection = JDBCUtil.getConnection();
                    String sql = "select *from sort";
                    Map<String, Object> map = qr.query(connection, sql,new MapHandler());
                    for (String key   : map.keySet()) {
                        System.out.println(key +"  "+map.get(key));
                    }
                    DbUtils.closeQuietly(connection);
                }





                /*8.MapListHandler
                 * 将结果每一行数据  
                 * 
                 */
                @Test
                public void select8() throws SQLException {
                    QueryRunner qr  = new QueryRunner();
                    Connection connection = JDBCUtil.getConnection();
                    String sql = "select*from sort";
                    List<Map<String, Object>> list = qr.query(connection, sql, new MapListHandler());
                    for (Map<String, Object> map : list) {
                        for (String key : map.keySet()) {
                            System.out.println(key + "  "+ map.get(key));
                        }
                    }
                    DbUtils.closeQuietly(connection);
                }
        }

猜你喜欢

转载自blog.csdn.net/qq_36390044/article/details/79691866