common-utils的使用
声明:
此文档为免费资料,仅供个人研究和学习之用,不得用于任何商业目的。在免费、且无任何附加条件的前提下,可在网络媒体中自由传播。转载时请保持文档的完整性,作者不能保证文档的完全正确,希望大家对其中的错误进行更正并与我联系。
在写作过程中,我参考了网上大量的资料,并摘取了其中的一部分内容,在这里向这些资料的作者表示深深的感谢,如果您认为我侵犯了您的著作版权,请告之我,我会将相关内容删除并将结果通知您。
本文档仅代表作者本人的观点。
联系QQ:20978405
联系邮箱:qjyong@gmail.com
技术博客: http://blog.csdn.net/qjyong
技术博客2:http://qjyong.javaeye.com/
1. 介绍
commons-dbutils是Apache组织提供的一个开源 JDBC工具类库,能让我们更简单的使用JDBC。它是一个非常小的类包,花几分钟的时间就能掌握它的使用。
2. 下载
进入apache官方网站的commons-dbutils网页:http://commons.apache.org/dbutils/
Binary:是编译好的jar包;source是源代码包。下载一份Binary到本地。解开后如下图所示:
其中commons-dbutils-1.1.jar就是供使用的jar包;docs是这个组件的帮助文档。下面就通过示例介绍它的使用。
3. API介绍
3.1. DbUtils类
DbUtils是一个用来做一些如关闭连接、装载JDBC驱动程序之类的常规工作提供有用方法的类,它里面所有的方法都是静态的。
3.2. QueryRunner类
这个类简单化了执行SQL查询,它与ResultSetHandler组合在一起使用就可能完成大部分的数据库操作,它能够大大减少你所的编码量。
n public int update(Connection conn, String sql) throws SQLException:用来执行一个更新操作,不需要置换参数。
3.3. ResultSetHandler接口
正如它的名字所提示的,这一接口执行处理一个jaca.sql.ResultSet,将数据按要求转换为另一种形式。
common-dbutils组件包针对这个接口提供了九个实现类:
n ArrayHandler:把结果集中的第一行数据转成对象数组。
n ArrayListHandler:把结果集中的每一行数据都转成一个对象数组,再存放到List中。
n BeanHandler:将结果集中的第一行数据封装到一个对应的JavaBean实例中。
n BeanListHandler:将结果集中的每一行数据都封装到一个对应的JavaBean实例中,存放到List里。
n ColumnListHandler:将结果集中某一列的数据存放到List中。
n KeyedHandler:将结果集中的每一行数据都封装到一个Map里,然后再根据指定的key把每个Map再存放到一个Map里。
n MapHandler:将结果集中的第一行数据封装到一个Map里,key是列名,value就是对应的值。
n MapListHandler:将结果集中的每一行数据都封装到一个Map里,然后再存放到List
n ScalarHandler:将结果集中某一条记录的其中某一列的数据存成Object
如果这九个实现类中没有任何一个提供了你想要的服务,你可以自己写一个实现类。
3.4. 其它类和接口
org.apache.commons.dbutils.QueryLoader类:属性文件加载器,主要用于加载属性文件中的SQL到内存中。
org.apache.commons.dbutils.wrappers.SqlNullCheckedResultSet类:这个类是用来对sql语句执行完成之后的的数值进行null的替换。
org.apache.commons.dbutils.wrappers.StringTrimmedResultSet类: 去除ResultSet中字段的左右空格。
4. 使用
4.1. 准备数据库表
这边使用MySQL5数据库服务器,数据库名是test,建表语句:
CREATE TABLE `employee` ( `id` int(11) NOT NULL auto_increment, `name` varchar(50) default NULL, `age` int(11) default NULL, `position` varchar(50) default NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; |
4.2. 创建java工程
主要的两个类,一个是Employee实体类,另一个是EmployeeDao类。
4.2.1. Employee类
/** * ClassName: Employee.java * Author: qiujy * CreateTime: 2008-8-20 * EMAIL: qjyong@gmail.com * Copyright 2008 ++YONG All rights reserved. */ package org.qiujy.domain; /** 员工实体类 */ public class Employee { private int id; private String name; private int age; private String position; public Employee() { } public Employee(int age, String name, String position) { super(); this.age = age; this.name = name; this.position = position; } //以下省略所有属性的getter和setter …… @Override public String toString() { return "[id=" + this.id + ",name=" + this.name + ",age=" + age + ",position=" + this.position + "]"; } } |
4.2.2. EmployeeDao类
/** * ClassName: EmployeeDao.java * Author: qiujy * CreateTime: 2008-8-20 * EMAIL: qjyong@gmail.com * Copyright 2008 ++YONG All rights reserved. */ package org.qiujy.dao; import java.sql.Connection; import java.sql.SQLException; import java.util.List; import org.apache.commons.dbutils.DbUtils; import org.apache.commons.dbutils.QueryRunner; import org.apache.commons.dbutils.handlers.BeanHandler; import org.apache.commons.dbutils.handlers.BeanListHandler; import org.qiujy.common.MyDbUtils; import org.qiujy.domain.Employee; /** 员工dao */ public class EmployeeDao { /** * 新增一个员工实例 * @param empl * @param conn * @throws DAOException */ public void insertEmployee(Connection conn, Employee empl) throws DAOException { String sql = "INSERT INTO employee(name,age,position) VALUES(?,?,?)"; try { QueryRunner qr = new QueryRunner(); Object[] params = {empl.getName(), empl.getAge(),empl.getPosition()}; qr.update(conn, sql, params); } catch (SQLException e) { throw new DAOException(e); } } /** * 根据ID删除一个员工实例 * @param conn * @param id * @throws DAOException */ public void deleteEmloyeeById(Connection conn, int id) throws DAOException { String sql = "DELETE FROM employee WHERE id=?"; try { QueryRunner qr = new QueryRunner(); qr.update(conn, sql, id); } catch (SQLException e) { throw new DAOException(e); } } /** * 更新员工的信息 * @param conn * @param empl * @throws DAOException */ public void updateEmployee(Connection conn, Employee empl) throws DAOException { String sql = "UPDATE employee SET name=?,age=?,position=? WHERE id=?"; try { QueryRunner qr = new QueryRunner(); Object[] params = { empl.getName(), empl.getAge(), empl.getPosition(), empl.getId() }; qr.update(conn, sql, params); } catch (SQLException e) { throw new DAOException(e); } } /** * 根据ID获取该员工实例 * @param conn * @param id * @return * @throws DAOException */ public Employee getEmployeeById(Connection conn, int id) throws DAOException { Employee empl = null; String sql = "SELECT id,name,age,position FROM employee WHERE id=?"; try { QueryRunner qr = new QueryRunner(); empl = (Employee) qr.query(conn, sql, id, new BeanHandler(Employee.class)); } catch (SQLException e) { throw new DAOException(e); } return empl; } /** * 获取所有的员工列表 * @param conn * @return 员工实例列表 * @throws DAOException */ @SuppressWarnings("unchecked") public List<Employee> getEmployeeList(Connection conn) throws DAOException { List<Employee> list = null; String sql = "SELECT id,name,age,position FROM employee"; try { QueryRunner qr = new QueryRunner(); list = (List<Employee>) qr.query(conn, sql, new BeanListHandler(Employee.class)); } catch (SQLException e) { throw new DAOException(e); } return list; } public static void main(String[] args) throws SQLException { Connection conn = MyDbUtils.getConnection(); List<Employee> list = new EmployeeDao().getEmployeeList(conn); for(Employee empl : list){ System.out.println(empl); } DbUtils.close(conn); } } |
附,本文档的PDF版和源代码下载地址:http://download.csdn.net/source/579793
common-utils的使用相关推荐
- No module named 'dlframework.common.utils.local'
No module named 'dlframework.common.utils.local' 报错代码: checkpoint_dict = torch.load(path)
- 阿里vod视频点播报错: com.aliyun.oss.common.utils.StringUtils
阿里VOD视频点播com.aliyun.oss.common.utils.StringUtils 先把aliyun-sdk-oss发布到3.1.0的版本,打开源码copy出来这个类.在自己的项目里面新 ...
- 多模块下依赖其他模块(例如Common模块)时的解决办法
在多模块下,使用Knife4j进行接口测试时发现,全局异常处理器无法捕获自定义异常,经检查,已经在该模块下的依赖文件中引入相关模块,但是在返回给前端数据时,对于错误的请求返回的还是 message:I ...
- Java.Utils:获取电脑配置信息
Don't say much, just go to the code. package org.bood.common.utils;import java.io.*;/*** 获取电脑配置信息** ...
- shiro整合oauth
前言 如果oauth原理还不清楚的地方,其参考这里. 一.基本思路脑图 二.客户端shiro配置 shiro配置文件 <?xml version="1.0" encodin ...
- 配置springmvc在其他类中(spring容器外)获取注入bean
今天在写JedisUtils的时候要注入JedisPool,而这个属性被设置为static,@Resource和@Autowired都不可以注入,因为spring不能为静态变量依赖注入.因此需要额外的 ...
- java 查询 代码_java使用es查询的示例代码
众所周知,elasticsearch简称es,它是基于基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticsearch是用Java开 ...
- java实现验证码功能
1.创建生成图片验证码工具类 package cn.wkgb.common.utils; import java.awt.Color; import java.awt.Font; import jav ...
- ruoyi后台管理系统分析(三)---admin包
三.admin包 --web包 -----controller包 -----------common包 CommonController.java------通用请求处理 package com.ru ...
- 如何使用SpringBoot AOP 记录操作日志、异常日志?
点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 作者:咫尺的梦想_w cnblogs.com/wm-dv/ ...
最新文章
- Java Web中的jsp技术
- 【AI-1000问】为什么LeNet5倒数第二个全连接层维度为84?
- Node中同步与异步的方式读取文件
- 2018-2019-1 20165234 《信息安全系统设计基础》第四周学习总结
- Andrew Ng机器学习公开课笔记 -- Logistic Regression
- Java解决空引用_在java中检查空引用的乐观方法
- 泄漏计算机网络安全法情节,第十一章网络安全法第十二章电子商务纠纷的法律解决详细分解.doc...
- Atitit 持久化 之道 attilax 艾龙著 1. 第2章 Java对象持久化技术概述 	2 1.1. 2.1 直接通过JDBC API来持久化实体域对象	2 1.2. 2.2 ORM简介	2
- Qt file not recognized: File truncated 半分钟搞定,不用浪费过多时间重新编译
- Ubuntu18.04安装TPlink WDN5200 usb无线网卡驱动
- SQL语句-考勤统计表按照年份统计员工每月的加班调休数据
- 解决服务器上中文显示乱码问题
- 《按自己的意愿过一生》语录一
- Kotlin-Android世界的一股清流-委托
- 二手交易app开发可以定制哪些功能
- 无线视频监控系统设计
- 我在创业游戏公司的一年
- 单项冠军企业申报条件及奖励政策
- C++ accumulate
- 口令攻击的理解和密码破解工具的使用