背景

学习了如何连接数据库之后,发现里面进行查询的过程有点麻烦,因此使用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。

DBUtils的最基本的使用的更多相关文章

  1. dbutils基本使用

    dbutils的查询,主要用到的是query方法,增加,修改和删除都是update方法,update方法就不讲了 只要创建ResultSetHandler接口不同的实现类对象就可以得到想要的查询结果, ...

  2. BenUtils组件和DbUtils组件

    BenUtils组件和DbUtils组件 [TOC] 1.BenUtils组件 1.1.简介 程序中对javabean的操作很频繁,所有Apache提供了一套开源api,方便javabean的操作!即 ...

  3. 【Java EE 学习 52】【Spring学习第四天】【Spring与JDBC】【JdbcTemplate创建的三种方式】【Spring事务管理】【事务中使用dbutils则回滚失败!!!??】

    一.JDBC编程特点 静态代码+动态变量=JDBC编程. 静态代码:比如所有的数据库连接池 都实现了DataSource接口,都实现了Connection接口. 动态变量:用户名.密码.连接的数据库. ...

  4. <十六>JDBC_使用 DBUtils 编写通用的DAO

    接口 : DAO<T>.java import java.sql.Connection;import java.sql.SQLException;import java.util.List ...

  5. <十五>JDBC_使用 DBUtils 进行更新、查询操作

    详解待续... DBUtilsTest.java import java.sql.Connection;import java.sql.Date;import java.sql.ResultSet;i ...

  6. DBUtils 笔记

    一.DBUtils介绍  apache 什么是dbutils,它的作用 DBUtils是java编程中的数据库操作实用工具,小巧简单实用. DBUtils封装了对JDBC的操作,简化了JDBC操作.可 ...

  7. python DBUtils.PooledDB 中 maxcached 和 maxconnections

    PooledDB 有这么几个参数 mincached : the initial number of idle connections in the pool (the default of 0 me ...

  8. 【Java EE 学习 17 上】【dbutils和回调函数】

    一.dbutils的核心就是回调函数,可以说如果没有回调函数的思想,dbutils是不可能被开发出来的. 对于dbutils中的QuryRunner类,向该类的query方法提供不同的参数,可以得到不 ...

  9. 【Java EE 学习 16 下】【dbutils的使用方法】

    一.为什么要使用dbutils 使用dbutils可以极大程度的简化代码书写,使得开发进度更快,效率更高 二.dbutils下载地址 http://commons.apache.org/proper/ ...

  10. DBUtils

    DBUtils中核心对象 > QueryRunner类 它提供了操作数据增删改查的方法 query() 执行select语句的 update() 执行insert update delete 语 ...

随机推荐

  1. Linux下磁盘分区,格式化以及挂载

    测试环境:VMware Workstation / centos7 1.磁盘分区 (1)易于管理和使用: 比如说我们把磁盘分了sda1.sda2.sda3.sda4盘,我们假设sda1盘为系统盘,其他 ...

  2. 怎样获取iframe节点的window对象

    需要使用iframeElement.contentWindow;  var frame = document.getElementById('theFrame'); var frameWindow = ...

  3. hdu 1548 简单bfs。。。

    由于题目过水.. 我就在这里把bfs的模板写一些吧.. bfs的思想是利用队列的特性 对树的每一层先遍历 每一次访问时取出队首 然后排出~ #include<queue>void bfs( ...

  4. springboot项目实用代码整理

    // 判断JSONOBJECT是否为空 CommonUtils.checkJSONObjectIsEmpty(storeInfo) // 判断字符串是否为空," "也为空 Stri ...

  5. 定时任务cron表达式详解

    参考自:https://blog.csdn.net/fanrenxiang/article/details/80361582 一 cron表达式 顺序 秒 分 时 日期 月份 星期 年(可选) 取值 ...

  6. 基于SCADA数据驱动的风电机组部件故障预警

    吴亚联 1 , 梁坤鑫 1 , 苏永新 1* , 詹 俊 2(1.湘潭大学 信息工程学院, 湖南 湘潭 411105: 2.湖南优利泰克自动化系统有限公司, 湖南 长沙 410205) 摘 要: 为提 ...

  7. K2 BPM_规范内部供应链流程,提高企业整体绩效_工作流流程管理

    方案背景 随着企业竞争的加剧.顾客需求的多样化以及市场变化的不确定因素增多,企业与企业间的竞争已经逐步转变为供应链与供应链间的竞争.企业只有在内部各业务流程有机统一的状态下,再与外部企业进行融合与协作 ...

  8. cmake简单用法

    CMake是一个跨平台的编译工具,类似于automake 安装 # cd cmake-2.8.10.2 # ./bootstrap # make # make install project proj ...

  9. pygame安装遇到的坑

    坑一:python版本冲突,电脑同时安装多个版本的python,由于每个都是python.exe,cmd命令窗口输入的python不一定是你想要的版本,所以最好还是安装单个版本即可. 坑二:由于电脑安 ...

  10. 从客户发送http请求到服务器返回http之间发生了什么

    由于我知识有限,可能会有模糊或者错误的地方,欢迎讨论与指正. 1.浏览器发出http请求 当用户访问一个url时,浏览器便会开始生成一个http请求. 首先获取http请求中所需要的参数,如url,c ...