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。

  • 相关阅读:
    170110-学习MoveIt!
    12.29-ros-gazebo高级
    12.27-ros-gazebo基础
    4.9-Simulation in gazebo or webots
    6.28-机器人模拟器Gazebo基础
    4.8-URDF in ROS
    Win32双缓冲画图原理
    Win32 计时器
    最简化的DirectX 11开发环境的配置 VS2010
    VS2010 C++编译报错LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
  • 原文地址:https://www.cnblogs.com/richardwlee/p/10309250.html
Copyright © 2011-2022 走看看