如何使用DBUtils
如何使用DButils
一丶首先什么是DButils呢?
DButils是操作数据库的组件,对传统操作数据库的类进行二次封装,可以把结果集转化成List,是java编程中的数据库操作实用工具,小巧简单实用。(PS:传统操作数据库的类指的是JDBC(java database connectivity)java数据库连接,java的数据库操作的基础API。
二丶DButils类
为了实现一些提供给常规工作有用方法的类(关闭连接丶装载JDBC驱动程序等),其里面的所有的方法都是静态(static)的。
1. Close方法:DButils提供了三个重载的关闭方法。这些方法检查所提供的参数是不是空NULL,if not NULL,它们就会关闭连接(Connection)丶声明(Statement)或结果集(ResultSet)对象。
2. CloseQuietly方法:CloseQuietly方法不仅可以隐藏一些程序抛出的SQL Exception,还可以在连接(Connection)丶声明(Statement)或结果集(ResultSet)为空(NULL)的情况下避免关闭。在重载CloseQuietly方法时,使用CloseQuietly(Connection *conn,Statement stmt,ResultSet rs),最后的块就可以只需要调用这个方法即可。
3. commitAndCloseQuietly方法:用来提交连接然后关闭连接
4. commitAndClose方法:作用同3,和3不同的是其在关闭连接时向上抛出SQL异常,而3不会抛出SQL异常。
5.Load Driver(string drive Class Name):重载并注册了JDBC驱动程序,如果成功返回true,无需捕捉ClassNotFoundException异常,通过返回值就可以判断驱动程序是否加载成功。
三丶ResultSetHandler接口
此接口执行处理一个Java.SQL.ResultSet,将数据转变并处理为任何一种形式,这样又更加方便其应用,使用起来也更加简单。
1.Array Handler:将ResultSet中第一行的数据转化为对象数组。
2.ArrayListHandler:将ResultSet中所有的数据转化为List,List中存放的是Object[]。
3.Bean Handler:将ResultSet中第一行的数据转化为类对象。
4.BeanListHandler:将ResultSet中所有的数据转化为List,List中存放的是类对象。
详细用法如下:
import org.apache.commons.dbutils.DbUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.MapListHandler; import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException; import java.util.Map;
import java.util.List; public class DbUtilsUseMapMySQL {
public static void main(String[] args) {
Connection conn = null;
String jdbcURL = "jdbc:mysql://Dell/Desktop/octopus";
String jdbcDriver = "com.mysql.jdbc.Driver";
String user = "root";
String password = "root"; try {
DbUtils.loadDriver(jdbcDriver);
conn = DriverManager.getConnection(jdbcURL, user, password); QueryRunner qRunner = new QueryRunner(); List mapList = (List) qRunner.query(conn, "select id, name from animals_table",
new MapListHandler()); for (int i = 0; i < mapList.size(); i++) {
Map map = (Map) mapList.get(i);
System.out.println("id=" + map.get("id"));
System.out.println("name=" + map.get("name"));
System.out.println("—————–");
} System.out.println("DbUtils_UseMap_MySQL: end."); } catch (SQLException e) {
// handle the exception
e.printStackTrace();
} finally {
DbUtils.closeQuietly(conn);
}
}
} class Employee {
private int id;
private String name;
public Employee() {
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
} public void setId(int id) {
this.id = id;
} public int getId() {
return this.id;
} public void print() {
System.out.println("id=" + id + " name=" + name);
}
}
5.此外还有ColumnListHandler(将ResultSet中某一列的数据存贮为List)Keyed Handler(将ResultSet中存成映射)Map Handler丶Map List Handler丶Scalar Handler等方法。
四丶Query Runner类
不仅简化了SQL查询操作,并且它与ResultSetHandler接口组合一起使用可以完成绝大多数的数据库操作,大大减少了我们作为程序猿所需要写的代码量。
此类包含了QueryRunner()和Query Runner(DataSource ds)方法。
注:①query(Connection conn,String SQL,Object[]paramst)方法:可以执行一个带参的选择select。
例如:
String sql = "select * from users";
Object[] rs = runner.query(sql, new ArrayHandler());
// Print: ArrayHandler: [1, 测试用户1, test1, jiseflwes, 10, false]
System.out.println("ArrayHandler: " + Arrays.toString(rs));
②update(Connection conn,String SQL,Object[]paramst)方法:执行一个带参的insert,update,delete/alter 操作。
③update(String SQL,Object[]paramst)方法:与②不同的是其是从DATa Source/Set DATa Source方法中重新获得的。
五丶使用DButils的基本步骤
1.导入DbUtils使用的jar包
2.新建DbUtilsTest.java单元测试类
3.查看现有数据库数据
4.输入所需操作的代码
5.查看执行后的数据库结果
6.接下来测试插入方法,插入一条新数据
7.查看数据库执行结果
8.测试更新,更新刚插入的数据
以上适用于更新插入删除操作。
六丶DBUtils设计原则
①小 - DBUtils库的大小非常小,类较少,因此易于理解和使用。
②透明 - DBUtils库在幕后工作量不大。 它只需要查询和执行。
③快速 - DBUtils库类不会创建许多后台对象,并且在数据库操作执行方面非常快。
七丶如何配置DBUtils?
1.配置Java
①JAVA_HOME -此环境变量应该指向你安装JDK的目录,例如C:\ Program Files\ Java \ JDK1.5.0。
②CLASSPATH - 此环境变量应设置适当的路径,例如C:\ Program Files \ Java \ jdk1.5.0_20 \ jre \ lib。
③PATH - 此环境变量应指向适当的JRE bin,例如C:\ Program Files \ Java \ jre1.5.0_20 \ bin。
(如之前已经配置完成则只需检查一下是否还能够正常使用即可)
2.安装数据库
安装适合自己的系统的数据库,一般方便学习的话,可以使用MySql,基于自己计算机的操作系统选择32bit或64bit从官网下载安装即可。
3.安装Database Drivers
最新的JDK包括JDBC-ODBC Bridge驱动程序,它使大多数开放式数据库连接(ODBC)驱动程序可供使用JDBC API的程序员使用。
4.从官网下载Commons DBUtils Archive
5.配置Apache Common DBUtils环境
设置环境变量 APACHE_HOME 到 C:\Apache
6.配置CLASSPATH变量
设置环境变量 CLASSPATHto%CLASSPATH%;%APACHE_HOME%\commons-dbutils-1.7.jar;mysql-connector-java-5.1.28.jar;commons-dbcp2-2.1.1.jar;commons-pool2-2.4.3.jar;commons-logging-1.2.jar;
八丶常见问题
1.QueryRunner 下的方法不是每个方法都设成关闭连接的
2. Dbutils 在做表到对象的映射时要求列名和对象的属性名必须一致
3.必须满足JavaBean的规范,其次Bean的getter与setter方法的名字与结果集的列名一一对应,而不要求JavaBean的私有成员与表结果集列名一一对应。
4.DBUtils执行insert插入操作的时候,无法返回自增主键。
5.能使用包装类型就不要使用基本类型(why?实际上就是为了保证在查询结果为null的时候,不会因为给基本类型赋空值而发生错误)
int a1 = (Integer) null;
boolean x1 = (Boolean)null;//错误Integer a2 = (Integer) null;
Boolean x2 = (Boolean)null;//正确
6.DBUtils可以将结果集封装为各种类型,主要有:Bean/List,Map/List/Map,数组/List<数组>,列/List<列>,这些类型。
如何使用DBUtils相关推荐
- DBUtils 笔记
一.DBUtils介绍 apache 什么是dbutils,它的作用 DBUtils是java编程中的数据库操作实用工具,小巧简单实用. DBUtils封装了对JDBC的操作,简化了JDBC操作.可 ...
- 清瘦的记录者: 一个比dbutils更小巧、好用的的持久化工具
https://gitee.com/bitprince/memory 1. 概述 1.1 连接.语句和结果集 从JDBC的规范上看,其对数据访问层有相当简洁的抽象:1.连接(connection) 2 ...
- DbUtils工具类使用
2019独角兽企业重金招聘Python工程师标准>>> DbUtils工具类使用 创建数据库 CREATE TABLE `student` (`userId` int(11) NOT ...
- 从 java bean 的内省到 dbutils 的应用
java bean 内省的基础 java bean 的内省,其实可以算是反射的一种基础应用,关于 java 的反射,无非就是获得对应的类.属性.方法.修饰符等的应用,对于 java 的反射探讨,可以点 ...
- python - DBUtils 连接池减少oracle数据库的连接数
问题: 接到需求,告知项目的oracle连接次数过多,对系统造成太过大的负担,要求减少oracle数据库的连接次数 分析: 仔细分析代码以后,发现产生问题的原因,在于之前要求提升oracle监控的监控 ...
- DBUtils的使用之增删改的操作
1.1.1 DBUtils的添加操作 @Test/*** 添加操作*/public void demo1() throws SQLException{// 创建核心类:QueryRunner:Quer ...
- MySQL数据库学习笔记(十二)----开源工具DbUtils的使用(数据库的增删改查)
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- python DbUtils 使用教程
下载: https://pypi.python.org/pypi/DBUtils/1.2 先下载你要安装的包,并解压到磁盘下: 进入到该文件的setup.py 目录下 ,打开cmd,并切换到该目录下:
- python调用libs.dbutil_Python 使用 PyMysql、DBUtils 创建连接池,提升性能
Python 编程中可以使用 PyMysql 进行数据库的连接及诸如查询/插入/更新等操作,但是每次连接 MySQL 数据库请求时,都是独立的去请求访问,相当浪费资源,而且访问数量达到一定数量时,对 ...
- DBUtils开源JDBC类库,对JDBC简单封装(作用是:简化编码工作量,同时不会影响程序的性能)...
DBUtils:提高了程序的性能,编程更加简便 架包 mysql-connector-java-jar commons-dbcp-1.4jar commons-pool-1.5.5jar common ...
最新文章
- windows下使用QtXlsx
- python求1到n的乘积_Python简单实现两个任意字符串乘积的方法示例
- java图片转换成base64_Java将图片转换成Base64字符串
- 一个自己写的有关数据库的treeview.
- 计算机编程语言的分类,解释型语言、编译型语言、脚本语言的区别
- Chapter 5 Blood Type——24
- frp对http协议应用
- 文件另存为时名称会改变_易经:人处在困境时,不要焦虑,改变固定习惯,就会迎来转机...
- 【机器学习-西瓜书】三、逻辑回归(LR);线性判别分析(LDA)
- 详解Android源码的编译
- Android5.0 CheckBox颜色修改
- /proc文件系统详解
- C++11新特性——std::bind参数绑定
- Linux Huge page
- 一分钟让你知道如何删除PDF其中几页
- 软考2022下半年上午题真题和知识点整理
- 个人对于区块链技术的理解
- 可解释推荐系统研究综述
- DBLP 搜索爬虫项目
- 深圳软件测试培训:事件与事件处理