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等其他包
使用步骤
- 生成一个查询器(实例)
//这个是C3P0,配置见其他随笔
ComboPooledDataSource dataSource = new ComboPooledDataSource();
//这个是需要的生成的查询器
QueryRunner queryRunner = new QueryRunner(dataSource);
- 进行操作
//增加 第一个参数是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");
- 关于查询的操作
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的最基本的使用的更多相关文章
- dbutils基本使用
dbutils的查询,主要用到的是query方法,增加,修改和删除都是update方法,update方法就不讲了 只要创建ResultSetHandler接口不同的实现类对象就可以得到想要的查询结果, ...
- BenUtils组件和DbUtils组件
BenUtils组件和DbUtils组件 [TOC] 1.BenUtils组件 1.1.简介 程序中对javabean的操作很频繁,所有Apache提供了一套开源api,方便javabean的操作!即 ...
- 【Java EE 学习 52】【Spring学习第四天】【Spring与JDBC】【JdbcTemplate创建的三种方式】【Spring事务管理】【事务中使用dbutils则回滚失败!!!??】
一.JDBC编程特点 静态代码+动态变量=JDBC编程. 静态代码:比如所有的数据库连接池 都实现了DataSource接口,都实现了Connection接口. 动态变量:用户名.密码.连接的数据库. ...
- <十六>JDBC_使用 DBUtils 编写通用的DAO
接口 : DAO<T>.java import java.sql.Connection;import java.sql.SQLException;import java.util.List ...
- <十五>JDBC_使用 DBUtils 进行更新、查询操作
详解待续... DBUtilsTest.java import java.sql.Connection;import java.sql.Date;import java.sql.ResultSet;i ...
- DBUtils 笔记
一.DBUtils介绍 apache 什么是dbutils,它的作用 DBUtils是java编程中的数据库操作实用工具,小巧简单实用. DBUtils封装了对JDBC的操作,简化了JDBC操作.可 ...
- python DBUtils.PooledDB 中 maxcached 和 maxconnections
PooledDB 有这么几个参数 mincached : the initial number of idle connections in the pool (the default of 0 me ...
- 【Java EE 学习 17 上】【dbutils和回调函数】
一.dbutils的核心就是回调函数,可以说如果没有回调函数的思想,dbutils是不可能被开发出来的. 对于dbutils中的QuryRunner类,向该类的query方法提供不同的参数,可以得到不 ...
- 【Java EE 学习 16 下】【dbutils的使用方法】
一.为什么要使用dbutils 使用dbutils可以极大程度的简化代码书写,使得开发进度更快,效率更高 二.dbutils下载地址 http://commons.apache.org/proper/ ...
- DBUtils
DBUtils中核心对象 > QueryRunner类 它提供了操作数据增删改查的方法 query() 执行select语句的 update() 执行insert update delete 语 ...
随机推荐
- php-获取某个文件夹下面的文件数量
/** * 获取文件夹下文件的数量 * @param $url 传入一个url如:/apps/web * @return int 返回文件数量 */ public function getFileNu ...
- 在论坛中出现的比较难的sql问题:28(循环查询表来实现递归)
原文:在论坛中出现的比较难的sql问题:28(循环查询表来实现递归) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了. 所以,觉得有必 ...
- 解决Vs控制台程序出现NuGet\profile.ps1,因为在此系统上禁止运行脚本错误时或提示:“无法加载文件 \.nuget\packages\Microsoft.EntityFrameworkCore.Tools\1.1.0-preview4-final\tools\init.ps1,因为在此系统上禁止运行脚本”
1,打开Windows PowerShell 2.输入 set-executionpolicy remotesigned 即可执行脚本 如果执行命令失败的话重新选择Windows PowerShell ...
- Redis—简介
1.Redis是什么? 是一个速度非常快的非关系型数据库,即NoSql数据库(non-relational database) 可以将存储在内存的Key-Value数据持久化到硬盘,可以使用复制特性来 ...
- NRF52832 Mesh调试,使其同时支持串口打印和RTT打印
查看开发环境里面,是否有这个文件,如果没有你的话,则添加文件. 然后要在sdk_config.h中添加使能 然后打开刚才添加的文件retarget.c,主意里面这些地方 这里它进行判断,要么使用RTT ...
- Eclipse下使用Maven创建项目出现的archetype错误,记,转
记自:http://blog.csdn.net/ZhuboSun/article/details/50099635 [1]出现的错误提示: Unable to create project from ...
- C#Modbus Rtu的实现
Modbus Rtu的实现与Modbus Tcp的实现类似 C#ModBus Tcp的学习及Master的实现 我们还是需要借用一个开源库NModbus4,在vs中.打开NuGet管理器.安装NMod ...
- js实现图片的Blob base64 ArrayBuffer 的各种转换
一.相关基础知识 构造函数 FileReader() 返回一个新构造的FileReader 事件处理 FileReader.onabort 处理abort事件.该事件在读取操作被中断时触发. Fil ...
- VSCode 搭建 React Native 环境
安装 React Native Tools 在插件市场搜索 react 找到 React Native Tools 进行安装: 创建的react-native的工程拖入vscode中 点击F5即可运行 ...
- Pandas-高级部分及其实验
有趣的事,Python永远不会缺席! 如需转发,请注明出处:小婷儿的python https://www.cnblogs.com/xxtalhr/p/11014893.html jupyter代码原文 ...