首页 > 代码库 > JAVA WEB SQLHelper类的封装

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