DBUtils:提高了程序的性能,编程更加简便

架包

mysql-connector-java-jar

commons-dbcp-1.4jar

commons-pool-1.5.5jar

commons-dbutils-jar导进去

-------------------------------------------------------------------------------

//数据库连接池:三个开源的架包导进去

数据库连接池连接代码(其方法在TestJDBC()类中):

public Connection testBasicDataSource() throws Exception{
BasicDataSource dataSource=null;

//1. 创建DBCP数据源实例
dataSource=new BasicDataSource();

//2.为数据源实例指定必须的属性
//driver=com.mysql.jdbc.Driver
//jdbcUrl=jdbc:mysql://localhost:3306/lxn
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/lxn");
dataSource.setUsername("root");
dataSource.setPassword("lxn123");

//指定数据源的一些可选的属性
dataSource.setInitialSize(10);//指定数据库连接池中初始化连接的个数

dataSource.setMaxActive(50);//指定最大的连接数:同一时刻可以向数据库同时申请的连接数

dataSource.setMinIdle(10);//指定最小连接数:在数据库连接池空闲状态下,在连接池中最少连接数

dataSource.setMaxWait(1000*5);//等待数据库连接池分配连接最长时间,单位为毫秒,超出时间,抛出异常

Connection connection=dataSource.getConnection();

return connection;
}

--------------------------------------------------------------------------------------------------------

DBUtils里面的各种方法:

/*
* DBUtils:
* */
public class DBUtiles {
/*
*测试QueryRunner类的update方法,可使实现增删改的功能;
*QueryRunner的query方法的返回值取决于其resultsethandller的返回值
*
* */
TestJDBC t=new TestJDBC();

@Test

/*
* ScalarHandler:把结果解转为一个数值(可以是任意数据类型,字符串,date等)返回
* */
public void testScalarHandler() throws Exception{
Connection connection=null;
QueryRunner queryRunner=new QueryRunner();
try {
//获取数据库连接池的方法
connection=t .testBasicDataSource();

String sql="select name from customer where id=?";
//new MapHandler()此方法输出一个结果的键值对;
Object result=
queryRunner.query(connection, sql,new ScalarHandler(),35);
System.out.println(result);
} catch (Exception e) {
e.printStackTrace();
}finally {
close(connection, null, null);
}
}

========================================================
/*
* MapListHanlder:将结果集转为一个map的list
* map:对一个查询的一条记录;键,是列的属性名,值,是键所对应属性名的值; 键不是列的别名
* 而MapListBanlder:返回多条记录的对应的map的集合
* */
public void testMapListHandler() throws Exception{
Connection connection=null;
QueryRunner queryRunner=new QueryRunner();
try {
//获取数据库连接池的方法
connection=t.testBasicDataSource();

String sql="select id,name,email,birth from customer";
//new MapHandler()此方法输出一个结果的键值对;
List<Map<String, Object>> result=
queryRunner.query(connection, sql,new MapListHandler());
System.out.println(result);
} catch (Exception e) {
e.printStackTrace();
}finally {
close(connection, null, null);
}
}

======================================================
/*
* MapHanlder:返回sql对应的第一条记录对应的map对象
* 输出的是键值对:键,是列的属性名,值,是键所对应属性名的值;
* 键不是列的别名,
* */
public void testMapHandler() throws Exception{
Connection connection=null;
QueryRunner queryRunner=new QueryRunner();
try {
//获取数据库连接池的方法
connection=t.testBasicDataSource();

String sql="select id,name,email,birth from customer";
//new MapHandler()此方法输出一个结果的键值对;
Map<String, Object> map=
queryRunner.query(connection, sql,new MapHandler());
System.out.println(map);
} catch (Exception e) {
e.printStackTrace();
}finally {
close(connection, null, null);
}
}

==================================================================
/*
* BeanListHanlder:把结果集转换为一个list,该list不为空,但可能为空集合(size(),方法返回为0)
* 若sql语句的确能够查到记录,list存放创建BeanListHanlder传入的class对象对应的对象
* */

public void testBeanListHandler() throws Exception{
Connection connection=null;
QueryRunner queryRunner=new QueryRunner();
try {
//获取数据库连接池的方法
connection=t.testBasicDataSource();

String sql="select id,name,email,birth from customer";
//BeanListHandler(Customer.class)此方法输出全部结果集
List<Customer> list=
queryRunner.query(connection, sql,new BeanListHandler(Customer.class));
System.out.println(list);
} catch (Exception e) {
e.printStackTrace();
}finally {
close(connection, null, null);
}
}
============================================================
/*
* BeanHanlder:把结果集的第一条记录转为创建BeanHanlder对象时转入的Class参数对应的对象
* */
public void testBeanHandler() throws Exception{
Connection connection=null;
QueryRunner queryRunner=new QueryRunner();
try {
//获取数据库连接池的方法
connection=t.testBasicDataSource();
//11:String sql="select id,name,email,birth from customer where id=?";
String sql="select id,name,email,birth from customer";
//new BeanHandler(Customer.class)此方法只输出一个结果
Customer customer=
queryRunner.query(connection, sql,new BeanHandler(Customer.class));

//11: Customer customer=
// queryRunner.query(connection, sql,new BeanHandler(Customer.class),35);
System.out.println(customer);
} catch (Exception e) {
e.printStackTrace();
}finally {
close(connection, null, null);
}
}
===============================================================
class MyResultSetHandler implements ResultSetHandler{
@Override
public Object handle(ResultSet resultSet) throws SQLException {
List<Customer> list=new ArrayList<Customer>();
while (resultSet.next()) {
int id=resultSet.getInt(1);
String name=resultSet.getString(2);
String email=resultSet.getString(3);
Date birth=resultSet.getDate(4);
Customer customer=new Customer(id, name, email, (java.sql.Date) birth);
list.add(customer);
}
return list;
}
}
//查询方法
public void testQuery() throws Exception{
QueryRunner queryRunner=new QueryRunner();
Connection connection=null;
try {
//获取数据库连接池,t.testBasicDataSource();是已经建立好的方法
connection=t.testBasicDataSource();
String sql="select id,name,email,birth from customer";

// QueryRunner的query方法的返回值取决于其resultsethandller的返回值
Object obj=queryRunner.query(connection, sql, new MyResultSetHandler());
System.out.println(obj);
} catch (Exception e) {
e.printStackTrace();
}finally {
close(connection, null, null);
}
}

=========================================================
//实现增删改
public void testQueryRunnerUpdate() throws Exception{
//1.创建QueryRunner的实现类

//删除语句
String sql="delete from customer where id in(?,?)";

//修改语句

//String sql="update customer set name='panpan' where id=90";

//增加语句
//String sql="insert into customer values(90,'jianjia','panpan','1992-5-3')";

Connection connection=null;
QueryRunner queryRunner=new QueryRunner();

try {
//调用数据库连接池的方法
connection=t.testBasicDataSource();
//2.使用其update方法实现增删改
queryRunner.update(connection, sql, 32,33);
} catch (Exception e) {
e.printStackTrace();
}finally {
close(connection, null, null);
}
}

=============================================================
//关闭资源的方法
public void close(Connection connection,
PreparedStatement preparedStatement,ResultSet resultSet) throws Exception{
if (resultSet!=null) {
resultSet.close();
}if (preparedStatement!=null) {
preparedStatement.close();
}if (connection!=null) {
connection.close();
}
}
}

DBUtils开源JDBC类库,对JDBC简单封装(作用是:简化编码工作量,同时不会影响程序的性能)的更多相关文章

  1. Spring jdbc 对象Mapper的简单封装

    一般查询实体的时候,都需要这么使用/**      * 根据id查询      *       * @return      */     public Emp queryEmpById(Intege ...

  2. JDBC【2】-- JDBC工作原理以及简单封装

    目录 1. 工作原理 1.1 加载驱动 1.1.1 类加载相关知识 1.1.2 为什么JDK 1.6之后不需要显示加载了? 1.2 驱动加载完成了,然后呢? 2. 简单封装 1. 工作原理 一般我们主 ...

  3. 初学JDBC,JDBC工具类的简单封装

    //工具类不需要被继承 public final class JdbcUtils{ //封装数据库连接参数,便于后期更改参数值 private static String url="jdbc ...

  4. Apache—dbutils开源JDBC工具类库简介

    Apache—dbutils开源JDBC工具类库简介 一.前言 commons-dbutils 是 Apache 组织提供的一个开源 JDBC工具类库,它是对JDBC的简单封装,学习成本极低,并且使用 ...

  5. 利用jdbc简单封装一个小框架(类似DBUtils)

    利用jdbc写的一个类似DBUtils的框架 package com.jdbc.orm.dbutils; import java.io.IOException; import java.io.Inpu ...

  6. DBUtils-对JDBC简单封装的开源工具类库

    DBUtils 是对JDBC简单封装的开源工具类 详细介绍地址:  https://baike.baidu.com/item/Dbutils/10655914?fr=aladdin 在使用DBUtil ...

  7. java的jdbc简单封装

    在学了jdbc一段时间后感觉自己写一个简单的封装来试试,于是參考的一些资料就写了一下不是多好,毕竟刚学也不太久 首先写配置文件:直接在src下建立一个db.properties文件然后写上内容 < ...

  8. 1、原生jdbc连接oracle数据库简单介绍

    一.jbdc的常用API1.Connection:数据库的链接对象2.statement:数据库sql执行对象3.preparedStatment:sql的预编译处理对象,是statement子接口4 ...

  9. JDBC(1)简单介绍/数据库的连接

    初识JDBC: JDBC是java连接数据库的一个工具,没有这个工具,java将无法和数据库进行连接. JDBC API: JDBC是个“低级”接口,也就是说,他直接用于调用SQL命令. JDBC驱动 ...

随机推荐

  1. PAT 解题报告 1049. Counting Ones (30)

    1049. Counting Ones (30) The task is simple: given any positive integer N, you are supposed to count ...

  2. IntelliJ IDEA 常用设置讲解2

    IntelliJ IDEA 有很多人性化的设置我们必须单独拿出来讲解,也因为这些人性化的设置让我们这些 IntelliJ IDEA 死忠粉更加死心塌地使用它和分享它. 常用设置 如上图 Gif 所示, ...

  3. Java知多少(19)访问修饰符(访问控制符)

    Java 通过修饰符来控制类.属性和方法的访问权限和其他功能,通常放在语句的最前端.例如: 1 public class className { 2 // body of class 3 } 4 pr ...

  4. SQL 数据库 存储过程 视图

    一.存储过程 1.概述 存储过程是一组编译在单个执行计划中的T-SQL语句 存储过程:就像函数一样的会保存在数据库中(可编程性) 存储过程的优点: 1.允许模块化程序设计 2.允许更快执行如果某操作需 ...

  5. SWF类标准开头Tag

    [SWF(width="800", height="600", backgroundColor="#ffffff", frameRate=& ...

  6. 树形DP(Holiday's Accommodation HDU4118)

    题意:有n间房子,之间有n-1条道路连接,每个房间里住着一个人,这n个人都想到其他房间居住,并且每个房间不能有两个人,问所有人的路径之和最大是多少? 分析:对于每条边来说,经过改边的人由该边两端元素个 ...

  7. [转]mongodb 查询条件:关系运算符"$lt", "$lte", "$gt", "$gte", "$ne" 逻辑运算符"$and“, "$or“, "$nor“

    mongodb 查询条件   这节来说说mongodb条件操作符,"$lt", "$lte", "$gt", "$gte" ...

  8. [原创]java WEB学习笔记48:其他的Servlet 监听器:域对象中属性的变更的事件监听器 (3 个),感知 Session 绑定的事件监听器(2个)

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  9. ofbiz进击 第二节。 control 理解与创建

    首先要说的是,学习ofbiz,要去http://ofbiz.apache.org/官网里面,去看右边菜单里   Management Apps  的例子,然后找到类似的页面,去看调用的源码方法. co ...

  10. Java之Structs框架初探

    今天是小白第一次自己的接触Struts框架,因为网上的资料都是从Structs2开始,跟Structs1完全不同,因此,小白直接跳过1学习版本2的搭建,废话不多说,直接开始. 首先要搭建框架,就肯定要 ...