一、编写

在学完dbutils框架和DataSource连接池后,我们已经可以较轻松的查询和操作数据库了,但是每次进行查询和操作时,都需要配置数据库连接相关信息、获取连接池、等一系列重复的操作,故我们可以创建DBUtil工具类来帮我们进一步简化操作。
如下:

public class DBUtil {// 通过Properties工具类获取连接配置信息private static String DRIVER = PropertiesUtil.readProerties("src/homework/task1.properties", "DRIVER");private static String URL = PropertiesUtil.readProerties("src/homework/task1.properties", "URL");private static String USER = PropertiesUtil.readProerties("src/homework/task1.properties", "USER");private static String PWD = PropertiesUtil.readProerties("src/homework/task1.properties", "PWD");// 创建连接池static DruidDataSource ds = new DruidDataSource();// 声明 dbutils框架的 QueryRunner 对象private static QueryRunner qr;// 初始化static {ds.setUrl(URL);ds.setUsername(USER);ds.setPassword(PWD);ds.setDriverClassName(DRIVER);qr = new QueryRunner(ds);}// 增、删、改 数据public static int update(String sql, Object... o) {try {return qr.update(sql, o);} catch (SQLException e) {e.printStackTrace();}return 0;}// 查询一行为Bean对象,并返回public static <T> T toBean(String sql, Class<T> clazz, Object... o) {try {BasicRowProcessor brp = new BasicRowProcessor(new GenerousBeanProcessor());return qr.query(sql, new BeanHandler<T>(clazz, brp), o);} catch (SQLException e) {e.printStackTrace();}return null;}// 查询一行封装成Map,并返回public static <T> Map<String, Object> toMap(String sql, Object... o) {try {return qr.query(sql, new MapHandler(), o);} catch (SQLException e) {e.printStackTrace();}return null;}// 查询多行为Bean对象,放在List集合里并返回public static <T> List<T> toList(String sql, Class<T> clazz, Object... o) {try {BasicRowProcessor brp = new BasicRowProcessor(new GenerousBeanProcessor());return qr.query(sql, new BeanListHandler<T>(clazz, brp), o);} catch (SQLException e) {e.printStackTrace();}return null;}// 查询多行,每行封装成Map,最终整体封装成List并返回public static <T> List<Map<String, Object>> AllList(String sql, Object... o) {try {return qr.query(sql, new MapListHandler(), o);} catch (SQLException e) {e.printStackTrace();}return null;}
}

上面DBUtil工具类代码里只写了一些常用的查询和操作数据库数据的方法,还有一些不常用的方法待添加。

二、使用

增删改

以新增为例,删改与之类似:

// 新增数据 返回受影响的行数
int i = DBUtil.update("INSERT into student VALUES (null,?,?,?)",name,pwd,age);

查询

以 .toMap() 方法为例,其他方法与之类似:

// 查询一行数据并封装成Map,并返回
Map<String, Object> map = DBUtil.toMap("select * from shopinfo where stu_id = ?", 001);

小汤学编程之JDBC番外篇——DBUtil工具类相关推荐

  1. 小汤学编程之JAVA番外篇——Properties工具类

    一.编写 通过Java基础的学习,我们了解了Properties这种文本格式,Java程序通过专门的API可以很方便的与之进行交互.但是我们每次对Properties进行写入或读取时都要创建I/O流来 ...

  2. 小汤学编程之JDBC(一)——JDBC概述和快速入门

    一.JDBC概述 1.概念     2.作用 二.JDBC快速入门 1.实现步骤     2.查询数据和操作数据     3.SQL注入     4.事务管理     5.Statement与Prep ...

  3. 小汤学编程之JDBC(二)——dbutils框架和DataSource连接池

    一.dbutils框架 1.介绍     2.新增/删除/修改     3.各种查询     4.扩展:Bean中属性名与数据表列名的映射 二.DataSource连接池 1.获取DataSource ...

  4. 小汤学编程之JAVA基础day02——数据类型、Scanner类的使用

    一.JAVA的数据类型 1.变量      2.常量     3.基本数据类型     4.引用数据类型     5.数据类型转换 二.Scanner类的使用 1.作用      2.引入     3 ...

  5. 小汤学编程之JavaEE学习day05——会话管理、文件上传与下载、Ajax

    一.会话管理 1.HTTP协议     2.会话的概念     3.会话跟踪技术     4.会话跟踪技术分类(四种) 二.文件上传与下载 1.上传     2.下载     3.上传和下载合并优化成 ...

  6. 小汤学编程之JavaEE学习day08——Maven

    一.Maven介绍 1.什么是Maven     2.Maven的功能     3.什么是构建     4.项目的构建方式 二.Maven的安装 1.下载     2.安装     3.配置      ...

  7. 小汤学编程之JavaEE学习day01——HTTP简介、B/S与C/S应用、连接的建立与断开、Tomcat

    一.HTTP简介 1.HTTP请求报文     2.HTTP响应报文 二.B/S与C/S应用 三.连接的建立与断开 1.连接的建立(三次握手)     2.断开连接(四次挥手) 四.连接的建立与断开 ...

  8. 小汤学编程之MySQL经典例题——表的创建与查询

    题目: 会员类型表UserTypeInfo [系统管理员-管理会员 店主-卖家 普通会员-买家] 类型编号 typeId int 主键 自增长 类型名 typeName varchar(20) 不能为 ...

  9. 小汤学编程之JAVA经典例题——嵌套集合

    题目: 有一个记事本,能记录周一到周天,每天做的所有事情和事情的次数,周而复始.小明在这个记事本上记录了3周,内容如下: 第一周 ·周一:学java,逛街 ·周二:打台球,旅游 ·周三:溜冰,吃烧烤 ...

最新文章

  1. JSON入门基础知识
  2. give root password for maintenance 启动异常的解决
  3. 2018 hncpc 部分题
  4. 电机与拖动,直流他励电动机的特性测试实验报告,江南大学自动化
  5. matlab cd参数,MATLAB变量参数列表​
  6. python3.8.4rc1_Python3.8.4rc1 官方正式版
  7. corosync+pacemaker来实现http服务的高可用性
  8. Laravel5.4 导出Excel表格
  9. 【Python实例第32讲】一个分类分数的置换检验
  10. 车牌识别-基于模板匹配
  11. 罗尔定理、拉格朗日中值定理和柯西中值定理和用他们证明不等式、
  12. 音视频技术开发周刊 | 251
  13. java手风琴代码_[Java教程]18款jquery抽屉式手风琴导航特效代码
  14. 订单和订单详情的一对一 ,一对多映射
  15. CAD中插入外部参照字体会变繁体_知道这些技巧-轻松攻克CAD所有困难
  16. 记录今天解决的一个poi的问题
  17. 申请TexturePacker序列号
  18. python爬虫(6)——Selenium的使用
  19. GlobalMapper20如何生成经纬网格、标准图幅(1:100万标准分幅)
  20. 锚点定位 跳转到指定位置 回到顶部功能

热门文章

  1. 在IDEA中设置Java的堆大小
  2. 【心路】谈谈最近的一些想法吧
  3. 每天一杯C_Visual Studio各个版本的区别和总结
  4. react-native 安装的时候遇到的问题
  5. mysql(mariadb)重装
  6. 随机生成彩票的shell脚本
  7. EF框架step by step(4)—DBcontext应用于已存在数据库
  8. 【转】WPF 给DataGridTextColumn统一加上ToolTip
  9. 从程序员到项目经理(9):程序员加油站 -- 再牛也要合群【转载】
  10. Mac OS X 遭遇并抵御 ARP 攻击