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类的封装

时间: 2024-10-07 08:59:12

JAVA WEB SQLHelper类的封装的相关文章

Java Web分页类分享

分页类分享: package com.hcj.util; import java.util.ArrayList; import java.util.List; import org.apache.struts2.json.annotations.JSON; //分页类 public class Page<E> { private int totals; //查询到的总数量 private List<E> bigList ; //总记录集 private List<E>

Java Web 实用返回结果封装

实用的返回结果封装 使用示例 效果 Result ResultEnum 使用示例 /** * @Author: huangwenjun * @Description: * @Date: Created in 13:59 2018/3/28 **/ @RestController @CrossOrigin @RequestMapping("baofu") public class ConfigDemoController { @Autowired private BaoFooConfig

java jdbc sqlhelper

package com.shop.util; import java.sql.*; //SqlHelper类 //定义了数据库连接函数,关闭查询结果集,关闭Statement对象,关闭数据库连接 //这样的做法是执行上述4个操作时可以直接调用函数(面向对象的思想),可以好好理解一下 public class SqlHelper { public static Connection getConnection() { Connection conn = null; String driver =

[原创]java WEB学习笔记51:国际化 概述,API 之 locale类,dataFormat类,numberFormat类, MessageFormat类,ResourceBundle 类

本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 ---------------------------------

java web项目,java类中获得WEB-INF路径

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 private static String getWebInfPath() {         URL url = 当前类.class.getProtectionDomain().getCodeSource().getLocation();         String path = url.toString();         int index = pat

C#封装CRUD到SqlHelper类解读

1.简单说明一下,一般情况下,数据库连接字符串是在App.config文件中进行配置,然后再在代码中进行引用.因此,我们在这里先看一下App.config文件. 首先看需要添加的内容: 参数说明: name:表示键值,在代码中需要通过这键值来找到对应的连接字符串信息. connectionString:链接数据库的字符串信息.Server:数据库服务器,Database:数据库,uid:数据库账户名,pwd:数据库密码 <?xml version="1.0" encoding=&

java类的封装 继承 多态

1.猜数字小游戏 package cn.jiemoxiaodi_02; import java.util.Scanner; /** * 猜数字小游戏 * * @author huli * */ public class GuessNumberDemo { public static void main(String[] args) { int number = (int) (Math.random() * 100) + 1; while (true) { System.out.println("

Java——类的封装、继承与多态

一.类和对象 1.类 类是数据以及对数据的一组操作的封装体. 类声明的格式: 类声明 { 成员变量的声明: 成员方法的声明及实现: } 1.1 声明类 [修饰符] class 类<泛型> [extends 父类] [implements 接口列表] <泛型>——类的参数,带有参数的类成为泛型类. 1.2 声明成员变量和成员方法 成员变量声明格式:[修饰符] 数据类型 变量[=表达式]{,变量[=表达式]}: 成员方法——用来描述对成员变量进行的操作,格式:[修饰符] 返回值类型 方

Java Web的分页工具类

最近写一个java web项目,以前分页的工具类,都是基础架构的人写好了的.也没有去细看,现在遇到这个状况. 就整理一下思路,自己写了一个分页的工具类.写的不好之处,还望斧正. 下面是我的代码: PageUtil.java 1 package util; 2 3 import java.util.Map; 4 5 /** 6 * 分页工具类 7 * @author lyh 8 * 9 */ 10 public class PageUtil { 11 private int total; //总数