<十五>JDBC_使用 DBUtils 进行更新、查询操作
详解待续。。。
DBUtilsTest.java
import java.sql.Connection;
import java.sql.Date;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.ResultSetHandler;
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.kk.jdbc.JDBCTools;
public class DBUtilsTest {
/*
* ScalarHandler:把结果集转为一个数值(可以是任意基本数据类型和字符串,Date等)返回
* */
@Test
public void testScalarHandler(){
Connection con = null;
try {
con=JDBCTools.getConnection();
String sql = "select count(id) from customers";
Object result=qr.query(con, sql, new ScalarHandler());
System.out.println(result);
} catch (Exception e) {
e.printStackTrace();
}finally{
JDBCTools.release(null, null, con);
}
}
/*
* MapListHandler:将结果集转为一个Map的List,
* Map对应查询的一条记录,键:SQL查询的列名(不是列的别名),值:列的值
* MapListHandler返回的是多条记录对应的Map的集合
* */
@Test
public void testMapListHandler(){
Connection con = null;
try {
con=JDBCTools.getConnection();
String sql = "select name from customers where id=?";
List<Map<String,Object>> result = (List<Map<String, Object>>) qr.query(con, sql, new MapListHandler());
System.out.println(result);
} catch (Exception e) {
e.printStackTrace();
}finally{
JDBCTools.release(null, null, con);
}
}
/*
* MapHandler:返回SQL对应的第一条记录对应的Map对象;
* 键:SQL查询的列名(不是列的别名)
* 值:列的值
* */
@Test
public void testMapHandler(){
Connection con = null;
try {
con=JDBCTools.getConnection();
String sql = "select id,name,email,birth from customers";
Map<String,Object> result = (Map<String, Object>) qr.query(con, sql, new MapHandler());
System.out.println(result);
} catch (Exception e) {
e.printStackTrace();
}finally{
JDBCTools.release(null, null, con);
}
}
/*
* BeanListHandler:把结果集转为一个List,该List不为空,但可能为空集合(size()方法返回0)
* 若SQL语句能够查询到记录,List中存放创建BeanListHandler传入的Class对象对应的对象。
* */
@Test
public void testBeanListHandler(){
Connection con = null;
try {
con=JDBCTools.getConnection();
String sql = "select id,name,email,birth from customers";
List<Customer> customers = (List<Customer>) qr.query(con, sql, new BeanListHandler(Customer.class));
System.out.println(customers);
} catch (Exception e) {
e.printStackTrace();
}finally{
JDBCTools.release(null, null, con);
}
}
/*
* BeanHandler:把结果集的第一条记录转为创建BeanHandler对象时传入的Class参数对应的对象
* */
@Test
public void testBeanHandler(){
Connection con = null;
try {
con=JDBCTools.getConnection();
String sql = "select id,name,email,birth from customers where id=?";
Customer customer=(Customer) qr.query(con, sql, new BeanHandler(Customer.class), 6);
System.out.println(customer);
} catch (Exception e) {
e.printStackTrace();
}finally{
JDBCTools.release(null, null, con);
}
}
// 1、创建QueryRunner的实现类
QueryRunner qr = new QueryRunner();
/*
* QueryRunner的query方法的返回值取决于ResultSetHandler参数的handle方法的返回值
* */
@Test
public void testQuery() {
Connection con = null;
class MyResultSetHandler implements ResultSetHandler{
@Override
public Object handle(ResultSet rs) throws SQLException {
List<Customer> customers=new ArrayList<>();
while(rs.next()){
Integer id=rs.getInt(1);
String name=rs.getString(2);
String email=rs.getString(3);
Date birth=rs.getDate(4);
Customer customer=new Customer(id,name,email,birth);
customers.add(customer);
}
return customers;
}
}
try {
con = JDBCTools.getConnection();
String sql = "select id,name,email,birth from customers";
Object ob=qr.query(con, sql, new MyResultSetHandler());
System.out.println("谢荣康:"+ob);
} catch (Exception e) {
e.printStackTrace();
}finally{
JDBCTools.release(null, null, con);
}
}
/**
* 测试 QueryRunner类的update方法(insert 、update、delete)
*/
@Test
public void testQueryRunnerUpdate() {
// 2、使用update方法
String sql = "delete from customers where id in (?,?)";
Connection con = null;
try {
con = JDBCTools.getConnection();
qr.update(con, sql, 2, 5);
} catch (Exception e) {
e.printStackTrace();
} finally {
JDBCTools.release(null, null, con);
}
}
}
<十五>JDBC_使用 DBUtils 进行更新、查询操作的更多相关文章
- 第十五章、python中的进程操作-开启多进程
目录 第十五章.python中的进程操作-开启多进程 一.multprocess模块 二.multprocess.process模块 三.Process()对象方法介绍 四.Process()对象属性 ...
- USB学习笔记连载(十五):USB固件更新以及安装驱动
前几篇博客已经把如何更改固件程序和更改USB驱动名称,那么接下来就要把之前生成的 .iic 文件烧录到EEPROM里面去,实现USB的C2启动(笔者使用的是此类型,C2启动). 打开Cypress U ...
- <十六>JDBC_使用 DBUtils 编写通用的DAO
接口 : DAO<T>.java import java.sql.Connection;import java.sql.SQLException;import java.util.List ...
- [ExtJS5学习笔记]第三十五节 sencha extjs 5 组件查询方法总结
一个UI前台组件肯定会比较多,我们通常习惯性的使用ID来获取需要操作的组件,但是这种方法是extjs推荐的么?有没有extjs推荐使用的获取组件的方法呢? 目录 目录 extjs的查询组件的API 查 ...
- Python学习第二十五课——Mysql (多表查询)
多表查询: 内连接查询: 首先:创建两个表一个为tableA,一个为tableB,并且插入数据(代码省略) 同时查询两个表的记录: select * from tableA,tableB; 根据tab ...
- UWP开发入门(十五)——在FlipView中通过手势操作图片
本篇的最终目的,是模拟系统的照片APP可以左右滑动,缩放图片的操作.在实现的过程中,我们会逐步分析UWP编写UI的一些思路和技巧. 首先我们先实现一个横向的可以浏览图片的功能,也是大部分APP中的实现 ...
- (十五)Hibernate中的多表操作(5):双向多对多
Hibernate的双向关联. 对象之间可以相互读取. 双向只针对读取的操作.对于增.删除.改的操作没有任何影响. 案例 : 实现双向多对多 MenuBean.java package ...
- FreeSql (十五)查询数据
FreeSql在查询数据下足了功能,链式查询语法.多表查询.表达式函数支持得非常到位. IFreeSql fsql = new FreeSql.FreeSqlBuilder() .UseConnect ...
- 第三百六十五节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的基本查询
第三百六十五节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的基本查询 1.elasticsearch(搜索引擎)的查询 elasticsearch是功能 ...
随机推荐
- 关于httpd服务的安装、配置
httpd是Apache超文本传输协议(HTTP)服务器的主程序.通常,httpd不应该被直接调用,而应该在linux系统中由 apachectl 调用.接下来我们将了解有关httpd服务的安装与配置 ...
- 修改Glassfish默认密码,并允许远程登录
修改默认密码 1.打开命令提示窗口,进入 glassfish/bin 目录: 2.输入命令 asadmin 进入管理模式: 接着输入: change-admin-password 注意默认密码为空,要 ...
- extern
gcc编译器编译程序有四个阶段,预处理.编译.汇编.链接.预处理阶段会将源代码中的包含的头文件如stdio.h编译进来:编译阶段,gcc首先要检查代码的规范性.是否有语法错误等,以确定代码的实际要做的 ...
- Linux下的DOS攻击
Linux下的DOS攻击 DOS是Denial of service的简称,即拒绝服务,造成Dos攻击行为被称为Dos攻击,其目的是使计算机或网络无法提供正常的服务.最常见的Dos攻击有计算机带宽攻击 ...
- October 31st Week 45th Monday 2016
While there is life there is hope. 一息若存,希望不灭. Go on living even if there is no hope. Knowing is not ...
- vmware下centos7桥接模式无法上网
前一段时间由于想给vm中的centos分配一个独立的IP,就将网络适配器的连接方式由NAT改为桥接,一切顺利. 今天再次开机,IP居然变成了192开头的局域网,并且ping不通外网,经过查找资料,解决 ...
- DataTable 只保留想要的几列
using System; using System.Collections; using System.Configuration; using System.Data; using System. ...
- 再见,OI
你好,NOIP 2015年9月1日 正式成为了福建省莆田一中的一名高一成员 后来学校搞了选修 大家都很激动 因为自己的兴趣和特长能够得到发挥了(或者说能逃课或者看好多电影) 发现选修提供的选项中有好几 ...
- make: *** [out/host/linux-x86/obj/EXECUTABLES/obbtool_intermediates/Main.o] Error 1
在ubuntu12.04下编译android时,若出现如此错误,那是因为gcc版本太高. 通过gcc -v命令可以发现gcc库在/usr/lib/gcc/i686-linux-gnu目录下,该目录下有 ...
- [spring源码学习]六、IOC源码-BeanFactory和factory-bean
一.代码实例 在我们分析spring的IOC源码的时候,发现除了配置标准的bean,并且通过getBean(beanName)的方法获取到一个bean的实例外,似乎还有这不少其他获取的方法,例如在第四 ...