DBUtils的使用方法
来源:互联网 发布:mac电脑装windows10 编辑:程序博客网 时间:2024/06/08 07:05
今天使用DBUtils的时候遇到了一些问题,造成问题的原因是没弄清QueryRunner两种构造方法的区别。
QueryRunner的构造方法中常用的两种有:
1.默认的构造方法:QueryRunner qr = new QueryRunner();
2.带数据源的构造方法:QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());
如果使用默认的构造方法,那么当我们调用QueryRunner类实例对象的方法时要添加connection对象参数,如果使用带数据源的构造方法,那么我们可以不添加connection对象参数。同时在执行sql语句时可以不带参数以及带参数,具体的demo如下:
package com.hh.test;import java.sql.Connection;import java.sql.SQLException;import java.util.List;import com.hh.mvcapp.db.C3P0Util;import com.hh.mvcapp.domain.Customer;import org.apache.commons.dbutils.QueryRunner;import org.apache.commons.dbutils.handlers.BeanListHandler;import org.junit.Test;/** * BeanListHandler:将查询结果的每一行封装到customer对象,然后,再存入list集合 * 注意:QueryRunner有一种是默认的构造方法,该方法不传入任何参数,另一种是传入datasource的构造方法。在下面test中我们会讲解两种构造方法的区别。 * @author HH * */public class TestBeanListHandle {/** * 第一种情况是在构造QueryRunner对象时传入datasource对象,这样我们在调用query方法的时候可以不用传入connection参数。 */@Testpublic void test1() {// 第一步:创建queryRunner对象并且传入datasource,用来操作sql语句QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());// 第二步:创建sql语句String sql = "select * from customers";// 第三步:执行sql语句try {List<Customer> list = qr.query(sql, new BeanListHandler<Customer>(Customer.class));System.out.println(list);} catch (SQLException e) {e.printStackTrace();}}/** * 第二种情况是在构造QueryRunner对象时不传入datasource对象,这样我们在调用query方法的时候要传入connection参数。 */@Testpublic void test2() {// 第一步:创建queryRunner对象,用来操作sql语句QueryRunner qr = new QueryRunner();// 第二步:创建sql语句String sql = "select * from customers";Connection connection=null;// 第三步:执行sql语句try {connection=C3P0Util.getConnection();List<Customer> list = qr.query(connection,sql, new BeanListHandler<Customer>(Customer.class));System.out.println(list);} catch (SQLException e) {e.printStackTrace();}}/** * 带一个参数的sql语句执行方法 */@Testpublic void test3() {// 第一步:创建queryRunner对象,用来操作sql语句QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());// 第二步:创建sql语句String sql = "select * from customers where phone=?";Object phone="123456";//这儿写成数组也是可以得,相当于数组里面只有一个值// 第三步:执行sql语句try {List<Customer> list = qr.query(sql, new BeanListHandler<Customer>(Customer.class),phone);System.out.println(list);} catch (SQLException e) {e.printStackTrace();}}/** * 带多个参数的sql语句执行方法 */@Testpublic void test4() {// 第一步:创建queryRunner对象,用来操作sql语句QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());// 第二步:创建sql语句String sql = "select * from customers where phone=? and address=?";Object object[]={"123456","shanghai"};// 第三步:执行sql语句try {List<Customer> list = qr.query(sql, new BeanListHandler<Customer>(Customer.class),object);System.out.println(list);} catch (SQLException e) {e.printStackTrace();}}}
Customer.java
注意:记得导入c3p0和dbutils的jar包。
package com.hh.mvcapp.domain;public class Customer {private int id;private String name;private String address;private String phone;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}public String getPhone() {return phone;}public void setPhone(String phone) {this.phone = phone;}@Overridepublic String toString() {return "Customer [id=" + id + ", name=" + name + ", address=" + address + ", phone=" + phone + "]";}}
C3P0Uril.java
package com.hh.mvcapp.db;import java.sql.Connection; import java.sql.SQLException;import javax.sql.DataSource;import com.mchange.v2.c3p0.ComboPooledDataSource; public class C3P0Util { static DataSource cpds=null; static{ cpds = new ComboPooledDataSource("mysql");//这是mysql数据库 ,名字要和配置文件里一样 System.out.println(cpds); } /** * 获得数据库连接 */ public static Connection getConnection(){ try { return cpds.getConnection(); } catch (SQLException e) { e.printStackTrace(); return null; } } /** * 获取DataSource数据源 * @return */ public static DataSource getDataSource(){ return cpds; } /** * 数据库关闭操作 */ public static void close(Connection conn){ if(conn!=null){ try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } }
注意:记得导入c3p0和dbutils的jar包。
阅读全文
0 0
- DBUtils的使用方法
- DbUtils使用方法
- commons dbutils 使用方法
- DButils的用法
- dbutils的下载方法
- DButils的用法
- dbutils的使用
- DBUtils框架的使用
- commons-dbutils的操作方法
- DButils的使用感受
- DbUtils 的常规使用
- common-dbutils的使用
- Dbutils 的使用
- DButils 的使用
- apache--dbutils的使用
- DBUtils的使用
- DbUtils的使用
- 使用java的DBUtils
- opencv3_java 图像索贝尔Sobel处理 Imgproc.Sobel
- 南阳理工12题
- H5实现扫一扫(二)
- 自然语言处理相关书籍
- Ubuntu安装和卸载deb包软件
- DBUtils的使用方法
- linux下源码安装官方最新版Python
- JavaScript之同步与异步二-"异步模式"编程的4种方法
- 南阳理工14题
- opencv3_java 提取图像的RGB三原色分割图像Split Core.split
- 【玖哥乱弹】智能汽车从汽车信息娱乐系统开始
- C调用shell script脚本的方法
- [译] 在Web API 2 中实现带JSON的Patch请求
- 南阳理工16题
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
铃木锋驭自动挡
铃木雨燕多钱
铃木150摩托车报价
全新铃木雨燕
铃木雨燕自动挡
进口铃木摩托
铃木赛驰110
铃木越野摩托
铃木小摩托
铃木利亚纳自动挡
铃木 浪迪
红花风铃木价格
铃木摩托车多少钱
铃木雨燕分期付款
新一代铃木雨燕
铃木雨燕汽车怎么样
铃木骊驰gw250
铃木太子车
铃木女装摩托车
铃木雨燕怎样
铃木雨燕改装
铃木电动汽车
铃木sx4优惠
铃木 怎么样
铃木250骊驰
铃木雨燕新车
铃木雨燕 报价
进口铃木sx4
原装铃木摩托车
铃木吉姆尼图片
昌河铃木越野车
铃木锐爽125报价
铃木骊驰250
铃木锋驭团购
铃木羚羊怎么样
铃木250街跑
昌河铃木汽车价格
铃木sx4空间
锋驭铃木
铃木摩托车的价格
铃木旅行摩托车