zoukankan      html  css  js  c++  java
  • DBUtils的最基本的使用

    背景

    学习了如何连接数据库之后,发现里面进行查询的过程有点麻烦,因此使用DBUtils包来简化操作

    配置环境

    • win10

    • jdk11

    • idea

    • mysql8.0.13

    jar包

    • 连接数据库的包

      c3p0-0.9.5.2

      mchange-commons-java-0.2.11

      mysql-connector-java-8.0.14

    • DBUitls包

      commons-dbutils-1.7

    使用DBUtils

    DBUtils介绍

    只是简化了CRUD[增加(Create)、读取查询(Retrieve)、更新(Update)和删除(Delete)]代码。连接数据库还是要靠C3P0等其他包

    使用步骤

    1. 生成一个查询器(实例)
    //这个是C3P0,配置见其他随笔
    ComboPooledDataSource dataSource = new ComboPooledDataSource();
    //这个是需要的生成的查询器
    QueryRunner queryRunner = new QueryRunner(dataSource);
    
    1. 进行操作
    //增加  第一个参数是SQL代码,后面的参数是代表 ? 相对应的内容
    queryRunner.update("INSERT INTO category VALUES(?,?)", "t1id", "t1name");
    
    //删除
    queryRunner.update("DELETE FROM category WHERE cid = ?", "t1id");
    
    //更新
    queryRunner.update("UPDATE category SET cname = ? WHERE cid = ?", "t1gai", "t1id");
    
    1. 关于查询的操作
    queryRunner.query(sql语句,结果怎么展示,sql的?传参);
    
    //自己封装一个结果展示
    		Category category = queryRunner.query("SELECT * FROM category WHERE cid = ?", new ResultSetHandler<Category>() {
               @Override
               public Category handle(ResultSet resultSet) throws SQLException {
                   Category category = new Category();
                   while (resultSet.next()) {
                       String cid = resultSet.getString("cid");
                       String cname = resultSet.getString("cname");
                       category.setCid(cid);
                       category.setCname(cname);
                   }
                   return category;
               }
           }, 6);
           System.out.println(category);
    
    //用他们已经封装好的结果展示集
    //Category.class是一个javaBean,放这里应该是用反射生成一个实例
           List<Category> categoryList = queryRunner.query("SELECT * FROM category", new BeanListHandler<>(Category.class));
           for (Category category :
                   categoryList) {
               System.out.println(category.toString());
           }
    

    对于展示结果的说明

    开发据说常用BeanListHandler、BeanHandler

    BeanListHandler:[要所有的结果] 将结果集中的每一行数据都封装到一个对应的JavaBean实例中,存放到List里。
    BeanHandler:[只要第一条] 将结果集中的第一行数据封装到一个对应的JavaBean实例中。

    其他的结果集
    ScalarHandler:[要某条某列] 将结果集中某一条记录的其中某一列的数据存成Object。
    ArrayHandler:把结果集中的第一行数据转成对象数组。
    ArrayListHandler:把结果集中的每一行数据都转成一个对象数组,再存放到List中。
    ColumnListHandler:将结果集中某一列的数据存放到List中。
    KeyedHandler:将结果集中的每一行数据都封装到一个Map里,然后再根据指定的key把每个Map再存放到一个Map里。
    MapHandler:将结果集中的第一行数据封装到一个Map里,key是列名,value就是对应的值。
    MapListHandler:将结果集中的每一行数据都封装到一个Map里,然后再存放到List。

  • 相关阅读:
    Spring框架之环绕增强
    Spring框架之最终增强
    Spring框架使用注解实现IOC的配置
    [算法] 带有条件的全排列 [dfs + set]
    [算法] 字符串的全排列 [dfs 递归神技]
    [面试] 十七道海量数据处理面试题与Bitmap详解 [未细看]
    [算法] 输出 字符串的全部子组合 [dfs 递归神技]
    [linux] 进程间通讯的几种方式
    [面试] 在数组查找这样的数,它大于等于左侧所有数,小于等于右侧所有数
    [算法] 彻头彻尾理解二分检索 6 种变换
  • 原文地址:https://www.cnblogs.com/richardwlee/p/10309250.html
Copyright © 2011-2022 走看看