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();
}
}
}

转载于:https://www.cnblogs.com/lxnlxn/p/5777529.html

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

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

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

  2. 对JDBC操作数据库的简单封装

    先来回顾一下java对数据库操作的典型步骤 1.创建数据库连接Connection 2.创建一个Statement 3.执行数据库操作,返回结果ResultSet 4.捕获处理异常 5.关闭资源和连接 ...

  3. 【JDBC】实现对JDBC 连接的简单封装

    package util;import java.sql.Connection; import java.sql.DriverManager;/**** 实现对JDBC 的封装* @author mq ...

  4. java jdbc 增删改封装_JAVA JDBC 常规增删改查简单封装

    JAVA JDBC 常规增删改查简单封装,可满足大多基本要求 作用: 1, 查询列表是直接返回List对象,不必再遍历: 2, 单条查询直接返回对象: 3, 执行sql仅需一个方法搞定: packag ...

  5. Spring框架对JDBC的简单封装。提供了一个JDBCTemplate对象简化JDBC的开发

    Spring JDBC     * Spring框架对JDBC的简单封装.提供了一个JDBCTemplate对象简化JDBC的开发     * 步骤:         1. 导入jar包        ...

  6. 数据库MySQL基础---JDBC开发步骤--JDBC封装工具类--PreparedStatement实现CRUD操作

    JDBC简介 1.JDBC定义Java数据库连接(Java Database Connectivity,简称JDBC):是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询 ...

  7. 使用JDBC来实现一个简单的增删改查

    使用jdbc来实现一个简单的增删改查 package com.database;import java.sql.Connection; import java.sql.PreparedStatemen ...

  8. jdbc驱动安装以及简单测试

    最近又需要写jdbc啦,正好顺便把下载配置教程整理一下 教程分三个部分 下载jdbc驱动 配置jdbc到项目 简单连接一下数据库 1. 下载jdbc驱动 下载网址 (https://dev.mysql ...

  9. JDBC+MYSQL图书馆,简单迷你图书管理系统练习小项目,实现查询,新增,修改,删除,退出功能。

    JDBC+MYSQL图书馆,简单迷你图书管理系统练习小项目,实现查询,新增,修改,删除,退出功能. 代码有一丢丢小多,最后有图解,讲的不对的地方希望各位大佬指出,对您有帮助的话请点个小小的赞. 题目与 ...

最新文章

  1. Linux系统文件以及目录介绍
  2. python一般用什么编译器-Python常用编译器原理及特点解析
  3. Seamless cloning泊松克隆
  4. paip. 内存占用少的php ide选择评测总结
  5. web系统数据库服务器,Web Gateway
  6. 攻击者利用的Windows命令、横向渗透工具分析结果列表
  7. 工艺仿真软件_中科院科研项目:算法与软件工程集成电路制造中的工艺仿真
  8. 软件项目管理第二章笔记---软件项目整体管理
  9. html勾选标签,html怎么勾选框
  10. 矿大课表ics文件生成小工具
  11. zyt-python
  12. 在使用vue脚手架之前你必须掌握的:vue的模版以及路由用法
  13. AI绘图实战(一):制作购物车图标icon | Stable Diffusion成为设计师生产力工具
  14. 从安装过程品国产Linux操作系统的技术来源与异同之处
  15. Python模拟Tim登录界面
  16. eclipse插件说明
  17. python 小游戏——外星人入侵源码倾情奉献
  18. echarts地图 绘制部分上海市公交线路数据
  19. Photoshop 2020投影被裁切,显示不完整的解决办法
  20. 虫师 Selenium3 基于Python 生成HTML测试报告误区记录

热门文章

  1. c语言的适当大小的子集,编译原理上机实验报告
  2. (5.0) Tomcat 8 源码, 初始化 bootstrap
  3. Layui 数据表格, 取消全选
  4. java list原理_Java集合:ArrayList的实现原理
  5. 企业推广渠道——百度知道
  6. Node和java和php,服务端I/O性能大比拼:Node、PHP、Java和Go(三)
  7. linux mysql 系统时间函数吗_linux下获取系统时间的方法
  8. python语言的实验心得体会范文_实验报告个人心得体会范文
  9. 开发日记-20190618 关键词 读书笔记《鸟哥的Linux私房菜-基础学习篇》
  10. DNS隧道工具使用 不过其网络传输速度限制较大