DBUtils

概述

DBUtils是Java编程中的数据库操作实用工具,小巧简单实用。

DBUtils封装了对JDBC的操作,简化了JDBC操作,可以少写代码。

DBUtils三个核心功能介绍

  • QueryRunner中提供对sql语句操作的API
  • ResultSetHandler接口,用于定义select操作后,怎样封装结果集
  • DBUtils类,它就是一个工具类,定义了关闭资源与事务处理的方法

QueryRunner核心类

  • QueryRunner(DataSourcr ds),提供数据源(连接池),DbUtils底层自动维护连接connection
  • update(String sql,Obj...params),执行更新数据
  • query(String sql,ResultSetHandler<T>rsh,Object...panrams),执行查询

ResultSetHandler结果集处理类

ArrayHandler:适合取1条记录,把结果集中的第一行数据转成对象数组。

ArrayListHandler:适合取多条记录,把结果集中的每一行数据都转成一个对象数组,再存放到List中。

 

BeanHandler:将结果集中的第一行数据封装到一个对应的JavaBean实例中(把每条记录封装成对象,适合取一条记录)

BeanListHandler:将结果集中的每一行数据都封装到一个对应的JavaBean实例中,存放到List里。//重点

MapHandler:将结果集中的第一行数据封装到一个Map里,key是列名,value就是对应的值。//重点

MapListHandler:将结果集中的每一行数据都封装到一个Map里,然后再存放到List

ColumnListHandler:将结果集中某一列的数据存放到List中。

KeyedHandler(name):将结果集中的每一行数据都封装到一个Map里(List<Map>),再把这些map再存到一个map里,其key为指定的列。

ScalarHandler:将结果集第一行的某一列放到某个对象中。//重点

复制代码
    package com.oterman.DButils;import java.sql.SQLException;import java.util.List; import java.util.Map; import org.apache.commons.dbutils.QueryRunner; import org.apache.commons.dbutils.handlers.ArrayHandler; import org.apache.commons.dbutils.handlers.ArrayListHandler; import org.apache.commons.dbutils.handlers.BeanHandler; import org.apache.commons.dbutils.handlers.BeanListHandler; import org.apache.commons.dbutils.handlers.MapHandler; import org.apache.commons.dbutils.handlers.MapListHandler; import org.apache.commons.dbutils.handlers.ScalarHandler; import org.junit.Test; import com.mchange.v2.c3p0.ComboPooledDataSource; /** * 该程序介绍ResultSetHandler的各个实现类; * @author 大蘑菇 * */ public class RSHandlerDemo { //--7.ScalarHandler:将查询的结果的第一行的某一列放到一个对象中;精确定位到某个值;  @Test public void query7() throws SQLException{ QueryRunner runner=new QueryRunner(new ComboPooledDataSource()); String name=(String)runner.query("select * from account",new ScalarHandler(2)); System.out.println(name); } //--6.MapListHandler:将查询的结果的每一行存入到一个map中,键为列名,值为各列值;然后再将map存入list中;  @Test public void query6() throws SQLException{ QueryRunner runner=new QueryRunner(new ComboPooledDataSource()); List<Map<String,Object>> map=runner.query("select * from account",new MapListHandler()); System.out.println(map); } //--5.MapHandler:将查询的结果的第一行存入到一个map中,键为列名,值为各列值;  @Test public void query5() throws SQLException{ QueryRunner runner=new QueryRunner(new ComboPooledDataSource()); Map<String,Object> map=runner.query("select * from account",new MapHandler()); System.out.println(map); } //--4.BeanListHandler:将查询的结果的每一行封装到一个javabean对象中,然后再将这些对象存入list中;  @Test public void query4() throws SQLException{ QueryRunner runner=new QueryRunner(new ComboPooledDataSource()); List<Account> list=runner.query("select * from account",new BeanListHandler<Account>(Account.class)); System.out.println(list); } //--3.BeanHandler:将查询的结果的第一行封装到一份javabean对象中;  @Test public void query3() throws SQLException{ QueryRunner runner=new QueryRunner(new ComboPooledDataSource()); Account account=runner.query("select * from account",new BeanHandler<Account>(Account.class)); System.out.println(account); } //--2.ArrayListHandler:将查询的结果的每一行放到一个数组中,然后再将数组放到集合中;  @Test public void query2() throws SQLException{ QueryRunner runner=new QueryRunner(new ComboPooledDataSource()); List<Object[]> list=runner.query("select * from account",new ArrayListHandler()); System.out.println(list); } //--1.ArrayHandler:将查询的结果的第一行放到一个数组中  @Test public void query1() throws SQLException{ QueryRunner runner=new QueryRunner(new ComboPooledDataSource()); Object[] array=runner.query("select * from account",new ArrayHandler()); System.out.println(array); } }

转载于:https://www.cnblogs.com/sy130908/p/11602167.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/246934.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

windows7 下vmware workstation 12安装Ubuntu16.04虚拟机及安装和共享文件夹

关于安装虚拟机&#xff0c;具体细节可参考下文&#xff08;已测试可执行&#xff09; vmware workstation 12 安装 ubuntu kylin 16.04虚拟机 下面就给出在虚拟机Ubuntu16.04下安装VMware Tools&#xff0c;是为了实现目标主机和虚拟机之间的通讯。 1.打开虚拟机之后&#…

前端行性能优化

PS&#xff1a;结合了精英的思想和自己的一些小小的总结~ 影响用户访问的最大部分是前端的页面。网站的划分一般为二&#xff1a;前端和后台。我们可以理解成后台是用来实现网站的功能的&#xff0c;比如&#xff1a;实现用户注册&#xff0c;用户能够为文章发表评论等等。而前…

Python环境搭建及第三方库安装和卸载

因预处理医学图像数据需要用到以下的Python库 SimpleITK&#xff1b;Anaconda&#xff1b;PIL (Python Imaging Library)&#xff0c;故重新安装Python和第三方库。 一、安装Python 去官网&#xff1a;https://www.python.org/downloads/ 下载相应版本。 双击下载的安装包&…

VueX的store的简单使用心结

vuex的特点&#xff1a; 多组件共享状态: 多个组件使用同一个数据 任何一个组件发生改变, 其他组件也要跟着发生相应的变化 安装vuex npm install vuex&#xff1a; 创建实例&#xff1a; import Vuex from vuex import Vue from vue Vue.use(Vuex)const state {name : 张…

快速学习EndNote X7

EndNote X7 破解版本下载&#xff1a; http://bt.neu6.edu.cn/thread-1554395-1-1.html 链接: https://pan.baidu.com/s/1kVwetNL 密码: vh2b http://bbs.sciencenet.cn/thread-1192379-1-1.html 或者 http://www.las.ac.cn/endnote/endnote.jsp 一、EndNote主要功能 1.…

关于slot、slot-scope的指令的一些操作记录

关于slot、slot-scope的指令的一些操作记录&#xff1a; 从vue2.6.0开始&#xff0c;slot、slot-scope已经被废弃&#xff0c;推荐使用v-slot&#xff1b; slot-scope是作用域插槽, 父组件中不能直接用子组件中定义的data数据。 而slot-scope的出现就是解决了这样的问题 子组…

五种方法提高你的智力

五种方法提高你的智力 智力是天生的&#xff0c;一成不变的吗&#xff1f;教你五种方法提高智力&#xff1a;1体验新鲜事物 2挑战自己3有创造力的思考4生活中&#xff0c;多玩“hard”模式5多与他人进行交流 弯兔123 2011-04-04 14:53经验说&#xff1a;智力是天生的&#xff0…

matlab中 text 使用画图示例

% Plot the image of the Sensitivity and False Positive per image clear; close all; clc; I1 [0.5 75]; I2 [1 54.5];msize 19; %设定字体的大小hold on plot(I1(1),I1(2),ko-,MarkerFaceColor,r) % 红色实心圆点text(I1(1)0.1,I1(2),Wei 2002) hold on plot(I2(1),I2(2)…

计算机视觉界CV牛人牛事

CV人物1&#xff1a;Jianbo Shi史建波毕业于UC Berkeley&#xff0c;导师是Jitendra Malik。其最有影响力的研究成果&#xff1a;图像分割。其于2000年在PAMI上多人合作发表”Noramlized cuts and image segmentation”。这是图像分割领域内最经典的算法。主页&#xff1a;www.…

js消息任务队列

JS单线程、异步、同步概念 多次出现“事件循环”这个名词&#xff0c;简单说明了事件循环的步骤&#xff0c;以便理解nextTick的运行时机&#xff0c;这篇文章将更为详细的分析下事件循环。在此之前需要了解JS单线程&#xff0c;及由此产生的同步执行环境和异步执行环境。 众所…

Ubuntu下安装cmake,配置ITK 和 SimpleITK, VTK(已测试可执行)

curses库 在安装cmake之前应该先安装一下curses库。如果系统中有curses库的话&#xff0c;cmake将生成一个可执行文件ccmake&#xff0c;它是一个基于文本程序的终端&#xff0c;有点类似windows GUI。 sudo apt-get install libncurses5-dev 备注&#xff1a;若无curses库…

世界坐标与图像坐标

1. 右手坐标系 2. 左手坐标系 伸出左手&#xff0c;让拇指和食指成“L”形&#xff0c;大拇指向右&#xff0c;食指向上。其余的手指指向前方。这样就建立了一个左手坐标系。拇指、食指和其余手指分别代表x&#xff0c;y&#xff0c;z轴的正方向。判断方法&#xff1a;在空间直…

Ubuntu下安装 imagej 和 Fiji

安装ImageJ 方法一 sudo apt-get install imagej whereis imagej imagej -version 方法二 下载 Linux版本的 imagej 安装 Instructions cd /home mkdir imagej cp ij150-linux64-java8.zip /home/imagej unzip ij150-linux64-java8.zip 建立软连接&#xff0c;可以在终端…

Ubuntu下安装Pycharm及相关设置

下载 Pycharm 社区版本 http://www.jetbrains.com/pycharm/download/#sectionlinux 安装指导 Copy the pycharm-community-2016.2.3.tar.gz to the desired installation location (make sure you have rw permissions for that directory) cp /home/bids/Downloads/pycha…

朱松纯:初探计算机视觉三个源头兼谈人工智能

朱松纯 加州大学洛杉矶分校UCLA统计学和计算机科学教授&#xff08;Song-Chun Zhu&#xff1b;www.stat.ucla.edu/~sczhu&#xff09; 杨: 朱教授&#xff0c;你在计算机视觉领域耕耘20余年&#xff0c;获得很多奖项&#xff0c;是很资深的研究人员。近年来你又涉足认知科学、…

视觉研究的前世今生(上)王天珍(武汉理工大学)

视觉是人类最重要的知觉&#xff0c;没有视觉人类很难定位&#xff0c;识别物体&#xff0c;了解坏境&#xff0c;得以生存发展。20世纪两次世界大战&#xff0c;使得西方各国&#xff0c;不论是为了飞机安全着陆&#xff0c;还是导弹精确制导&#xff0c;都对视觉研究有了非常…

看了数百个PPT封面,我只想告诉你这两个套路!

做PPT离不开的一个词就是封面&#xff0c;封面即门面&#xff0c;很大程度上决定了你的作品给人的第一印象。 我们经常能够在网上看到一些大神做的封面&#xff0c;比如阿文、珞珈&#xff0c;非常酷炫。 这类封面也许不需要太多技巧&#xff0c;但一定是花了很多心思并且需要…

caffe 框架梳理(待续)

本文更多资料来源于罗韵北京深度学习资料和Ian Goodfellow的书籍《Deep Learning》 链接: http://pan.baidu.com/s/1jIRJ6mU 提取密码&#xff1a;xehi caffe&#xff1a;全称Convolutional Architecture for Fast Feature Embedding&#xff0c;是一个计算CNN 相关算法的框…