DAO工具类的封装源码
详细源码见下表,绝对原创,转载请注明出处!
package com.ydj.util; import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties; import javax.sql.DataSource; import com.alibaba.druid.pool.DruidDataSourceFactory; public class DAOUtil { private static DataSource source = null; static {
try {
Properties p = new Properties();
p.load(DAOUtil.class.getClassLoader().getResourceAsStream("druid.properties"));
source = DruidDataSourceFactory.createDataSource(p);
} catch (Exception e) {
e.printStackTrace();
}
} /**
* 实现与数据库的连接
*/
public static Connection getConnection() {
Connection conn = null;
try {
conn = source.getConnection();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
} /**
* 实现数据库的关闭
*/
public static void close(ResultSet set, PreparedStatement ps, Connection conn) {
try {
if(set != null) set.close();
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
if(ps != null) ps.close();
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
if(conn != null) conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
} /**
* 实现数据库表增删改的工具类
*/
public static int executeUpdate(String sql,Object...data) { Connection conn = null;
PreparedStatement ps = null;
try {
conn = DAOUtil.getConnection();
ps = conn.prepareStatement(sql);
for (int i = 0; i < data.length; i++) {
ps.setObject(i+1, data[i]);
}
return ps.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}finally {
DAOUtil.close(null, ps, conn);
}
return 0;
} /**
* 实现数据库表查询的工具类
*/
public static List<Map<String,Object>> executeQuery(String sql,Object...data){ Connection conn = null;
PreparedStatement ps = null;
ResultSet set = null;
try {
conn = DAOUtil.getConnection();
ps = conn.prepareStatement(sql);
for (int i = 0; i < data.length; i++) {
ps.setObject(i+1, data[i]);
}
set = ps.executeQuery();
List<Map<String, Object>> list = new ArrayList<>();
while(set.next()) {
int i = 1;
Map<String,Object> map = new HashMap<>();
while(i<=set.getMetaData().getColumnCount()) {
map.put(set.getMetaData().getColumnLabel(i), set.getObject(i));
i++;
}
list.add(map);
}
return list;
} catch (Exception e) {
e.printStackTrace();
}finally {
DAOUtil.close(set, ps, conn);
}
return null;
} }
DAO工具类的封装源码的更多相关文章
- Java基础知识强化63:Arrays工具类之方法源码解析
1. Arrays工具类的sort方法: public static void sort(int[] a): 底层是快速排序,知道就可以了,用空看. 2. Arrays工具类的toString方法底层 ...
- Arrays工具类使用与源码分析(1)
Arrays工具类主要是方便数组操作的,学习好该类可以让我们在编程过程中轻松解决数组相关的问题,简化代码的开发. Arrays类有一个私有的构造函数,没有对外提供实例化的方法,因此无法实例化对象.因为 ...
- iOS开发--QQ音乐练习,旋转动画的实现,音乐工具类的封装,定时器的使用技巧,SliderBar的事件处理
一.旋转动画的实现 二.音乐工具类的封装 -- 返回所有歌曲,返回当前播放歌曲,设置当前播放歌曲,返回下一首歌曲,返回上一首歌曲方法的实现 头文件 .m文件 #import "ChaosMu ...
- Android 手势识别类 ( 二 ) GestureDetector 源码浅析
前言:Android 关于手势的操作提供两种形式:一种是针对用户手指在屏幕上划出的动作而进行移动的检测,这些手势的检测通过android提供的监听器来实现:另一种是用 户手指在屏幕上滑动而形成一定的不 ...
- 为什么很多类甚者底层源码要implements Serializable ?
为什么很多类甚者底层源码要implements Serializable ? 在碰到异常类RuntimeException时,发现Throwable实现了 Serializable,还有我们平进的ja ...
- Java微信公众平台接口封装源码分享
前言: 这篇博客是在三月初动手项目的时候准备写的,但是为了完成项目只好拖延时间写这篇博客,顺便也可以在项目中应用我自己总结的的一些经验.今天看来,这些方法的应用还是可以的,至少实现了我之前的 ...
- Android 手势识别类 ( 三 ) GestureDetector 源码浅析
前言:上 篇介绍了提供手势绘制的视图平台GestureOverlayView,但是在视图平台上绘制出的手势,是需要存储以及在必要的利用时加载取出手势.所 以,用户绘制出的一个完整的手势是需要一定的代码 ...
- Django——基于类的视图源码分析 二
源码分析 抽象类和常用视图(base.py) 这个文件包含视图的顶级抽象类(View),基于模板的工具类(TemplateResponseMixin),模板视图(TemplateView)和重定向视图 ...
- netty中的发动机--EventLoop及其实现类NioEventLoop的源码分析
EventLoop 在之前介绍Bootstrap的初始化以及启动过程时,我们多次接触了NioEventLoopGroup这个类,关于这个类的理解,还需要了解netty的线程模型.NioEventLoo ...
随机推荐
- C#中的线程之Abort陷阱
.简介 C#中通常使用线程类Thread来进行线程的创建与调度,博主在本文中将分享多年C#开发中遇到的Thread使用陷阱. Thread调度其实官方文档已经说明很详细了.本文只简单说明,不做深入探讨 ...
- 反手来个K8S入门到跑路
layout: post title: 反手来个K8S入门到跑路 category: linux date: 2019-06-09 tags: linux k8s 反手来个K8S入门到跑路 前言 放假 ...
- mysql使用replace和on duplicate key update区别
实际业务使用中,有时候会遇到插入数据库,但是如果某个属性(比如:主键)存在,就做更新.通常有两种方式:1.replace into 2.on duplicate key update 但是在使用过程 ...
- 蚂蚁金服财富技术部,诚招Java研发工程师。校招内推!!!
蚂蚁金服财富技术部,诚招Java研发工程师. 团队是蚂蚁金服财富技术部核心团队,支持亿级互联网交易清算,在这里不仅能学习到先进的互联网技术,也能了解许多终身受益的金融知识. 内推对象 2020届毕业生 ...
- 学习DB2之Linux环境下下载
一 下载前的注册IBM地址:https://www-01.ibm.com/marketing/iwm/iwm/web/pick.do?source=swg-db2expressc&S_PKG= ...
- PC 端常用软件
WPS 金山文档 有道云笔记 格式工厂 运行精灵 UC 遨游 360 Firefox 浏览器 光影魔术手 美图秀秀 2345好压 火绒安全软件 有道云笔记 悟空游戏厅 微信 QQ 迅雷 百度网盘 ...
- CESIUM内置shader变量和函数[转]
cesium中内置了一些常量.变量和函数,在vs和fs中可直接使用. 内置uniform 内置uniform主要置于AutomaticUniforms类里面,该类私有未开放文档. czm_backgr ...
- vmWare安装centos7之后使用yum安装提示there are on enabled repos(修改yum源)
可以使用这个命令修改yum源 curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.rep ...
- Spring Boot CLI——centos7
Spring Boot是一个命令行工具,用于使用Spring进行快速原型搭建.它允许你运行Groovy脚本,这意味着你可以使用类Java的语法,并且没有那么多的模板代码. 所有版本下载地址这里下载的版 ...
- Jupyter Notebook in a virtual environment (virtualenv)
$ python -m venv projectname $ source projectname/bin/activate (venv) $ pip install ipykernel (venv) ...