JAVA WEB SQLHelper类的封装
在这次做项目中,我对自己最满意的就是封装了一下SQLHelper类,我对自己感到骄傲主要是
我是初学者,我刚开始不知道可以这样做,我只是想着试着去这样做了,结果真的可以,所以我
在我的模块就自己封装了一个SQLHelper,虽然下面用的这个不是很好,但是基本上满足需求,
因为似乎所有类都能转换为String,所以就用String数组来补充sql语句中的可变参数,但是有
一个问题,就是在调用的时候第二个参数必须为null,或者String数组,如果只有一个参数,也
要用String数组的形式传进去(如:String []params=n"ew String[]{"xxx"};),这样做也有
一定的麻烦。 由于当时不知道可变参数是这样写的,如果将以下的第二个参数换成String...
params,那么第二个参数在空的情况下就可以不写,或者写为null。 在只有一个值的情况下直接
转为String类型写入即可。再没有必要转换成String数组类型
/**SQLHelper
*创建人:幽林孤狼
*创建时间:2014-07-17 16:24
*/
package XXX;
import java.io.InputStream;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
import javax.sql.DataSource;
import org.apache.commons.dbcp.BasicDataSourceFactory; import com.new_fgw.utils.JdbcUtils; public class SQLHelper{
private static Connection conn=null;
private static PreparedStatement ps=null;
private static ResultSet rs=null;
private static DataSource myDataSource = null;
private static CallableStatement callableStatement=null;
static {
try {
Properties prop=new Properties();
InputStream in=JdbcUtils.class.getClassLoader ().getResourceAsStream("dbcpconfig.properties");
prop.load(in);
myDataSource=BasicDataSourceFactory.createDataSource(prop);
} catch (Exception e){
e.printStackTrace();
}
} public static Connection GetConn()throws SQLException {
return myDataSource.getConnection();
} public static DataSource getDataSource(){
return myDataSource;
} public static PreparedStatement getPs() {
return ps;
}
/**执行带有参数的更新sql语句
* @param sql
* @param parameters
* @return
*/
public static boolean executeUpdate(String sql,String []parameters){
boolean b=false;
try {
conn =GetConn();
ps = conn.prepareStatement(sql);
if(parameters!=null){
for(int i=0;i<parameters.length;i++){
ps.setString(i+1, parameters[i]);
}
}
int x=ps.executeUpdate();
if(x>0)
{
b=true;
}
} catch(Exception e) {
e.printStackTrace();
throw new RuntimeException(e.getMessage());
}finally{
SQLHelper.close(rs, ps,conn);
}
return b;
} /**执行带有参数的存储过程,完成数据的更新
* @param sql
* @param parameters sql
* @return
*/
public static boolean executeUpdateByProcedure(String procedure,String [] parameters){
boolean b=false;
try {
conn =GetConn();
callableStatement =conn.prepareCall(procedure);
if(parameters!=null){
for(int i=0;i<parameters.length;i++){
callableStatement.setString(i+1, parameters[i]);
}
}
int x=callableStatement.executeUpdate();
if(x>0)
{
b=true;
}
} catch(Exception e) {
e.printStackTrace();
throw new RuntimeException(e.getMessage());
}finally{
SQLHelper.close(rs, ps,conn);
}
return b;
}
/**执行带有参数的查询存储过程
* @param sql
* @param parameters sql
* @return
*/
public static ResultSet executeQueryByProcedure(String procedure,String [] parameters){ try {
conn =GetConn();
callableStatement=conn.prepareCall(procedure);
if(parameters!=null){
for(int i=0;i<parameters.length;i++){
callableStatement.setString(i+1, parameters[i]);
}
}
rs=callableStatement.executeQuery(); } catch(Exception e) {
e.printStackTrace();
throw new RuntimeException(e.getMessage());
}finally{
// SQLHelper.close(rs, ps,conn);
}
return rs;
} /**执行带有参数的查询sql语句
* @param sql
* @param parameters sql
* @return
*/
public static ResultSet executeQuery(String sql,String []parameters){
try {
conn = GetConn();
ps = conn.prepareStatement(sql);
if(parameters !=null){
for(int i=0;i<parameters.length;i++){
ps.setString(i+1, parameters[i]);
}
}
//??в??
rs = ps.executeQuery(); } catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e.getMessage());
}
return rs;
} /**
* 关闭对应的资源
* @param rs
* @param st
* @param conn
*/
public static void close(ResultSet rs, Statement st, Connection conn) {
try {
if (rs != null)
rs.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (st != null)
st.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if(conn!=null){
conn.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
dbcpconfig.properties文件如下:
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/databaseName
username=root
password=password
initialSize=10
maxActive=50
maxIdle=20
minIdle=5
maxWait=60000
connectionProperties=useUnicode=true;characterEncoding=UTF-8
defaultAutoCommit=true
defaultReadOnly= defaultTransactionIsolation=READ_COMMITTED
JAVA WEB SQLHelper类的封装的更多相关文章
- Java面向对象(类、封装)
面向对象 今日内容介绍 u 面向对象 u 封装 第1章 面向对象 1.1 理解什么是面向过程.面向对象 面向过程与面向对象都是我们编程中,编写程序的一种思维方式. l 面向过程的程序设计方式,是遇到一 ...
- java中关于类的封装与继承,this、super关键字的使用
原创作品,可以转载,但是请标注出处地址http://www.cnblogs.com/V1haoge/p/5454849.html. this关键字: this代表当前对象,它有以下几种用途: 1.本类 ...
- java基础(9):类、封装
1. 面向对象 1.1 理解什么是面向过程.面向对象 面向过程与面向对象都是我们编程中,编写程序的一种思维方式. 面向过程的程序设计方式,是遇到一件事时,思考“我该怎么做”,然后一步步实现的过程. 例 ...
- Java Web 实用返回结果封装
实用的返回结果封装 使用示例 效果 Result ResultEnum 使用示例 /** * @Author: huangwenjun * @Description: * @Date: Created ...
- java web 实体类生成
工具下载地址:https://download.csdn.net/download/g342105676/10813246
- [转]轻量级 Java Web 框架架构设计
工作闲暇之余,我想设计并开发一款轻量级 Java Web 框架,看看能否取代目前最为流行的而又越来越重的 Spring.Hibernate 等框架.请原谅在下的大胆行为与不自量力,本人不是为了重造轮子 ...
- Smart Framework:轻量级 Java Web 框架
Smart Framework:轻量级 Java Web 框架 收藏 黄勇 工作闲暇之余,我开发了一款轻量级 Java Web 框架 —— Smart Framework. 开发该框架是为了: 加 ...
- java jdbc sqlhelper
package com.shop.util; import java.sql.*; //SqlHelper类 //定义了数据库连接函数,关闭查询结果集,关闭Statement对象,关闭数据库连接 // ...
- 【JAVA】 05-String类和JDK5
链接: 笔记目录:毕向东Java基础视频教程-笔记 GitHub库:JavaBXD33 目录: <> <> 内容待整理: API-String 特点 String类: 1.St ...
随机推荐
- Excel操作--使用NPOI导入导出Excel为DataTable
1.ExcelHelper封装 namespace NPOI操作Excel { public class ExcelHelper { /// <summary> /// DataTable ...
- Spring使用外部的配置文件
在使用Spring做web项目的时候,通常会使用到数据库的连接信息 jdbcUrl driverClass username password 那么应该如何使用这些属性呢? 如在Spring中使用数据 ...
- highcharts 结合phantomjs纯后台生成图片
highcharts 结合phantomjs纯后台生成图片 highcharts 这个图表展示插件我想大家应该都知道,纯javascript编写,相比那些flash图表插件有很大的优势,至少浏览器不用 ...
- PCL—低层次视觉—点云滤波(基于点云频率)
1.点云的频率 今天在阅读分割有关的文献时,惊喜的发现,点云和图像一样,有可能也存在频率的概念.但这个概念并未在文献中出现也未被使用,谨在本博文中滥用一下“高频”一词.点云表达的是三维空间中的一种信息 ...
- Win8-64位安装OpenSSL详细过程
相关软件: 1.ActivePerl 5.22.1 : http://www.activestate.com/activeperl/downloads 2.Microsoft visual_studi ...
- 随机森林——Random Forests
[基础算法] Random Forests 2011 年 8 月 9 日 Random Forest(s),随机森林,又叫Random Trees[2][3],是一种由多棵决策树组合而成的联合预测模型 ...
- Mybatis中配置Mapper的方法
在这篇文章中我主要想讲一下Mybatis配置文件中mappers元素的配置.关于基础部分的内容可以参考http://haohaoxuexi.iteye.com/blog/1333271. 我们知道在M ...
- IE css expression(表达式)
很多时候我们需要对IE6的bug写一些hack,如max-height,absolute元素高度100%等. css里面的 expression(表达式)和js里面的差不多,如: 获取当前元素的高度: ...
- POJ 2516 最小费用流
依然最小费用最大流模板题 建边麻烦了些 #include <cstdio> #include <cstring> #include <iostream> #incl ...
- 函数os_file_pread
/*******************************************************************//** Does a synchronous read ope ...