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

原文地址:https://www.cnblogs.com/ylgl/p/3869357.html