JAVA WEB SQLHelper类的封装

来源:互联网 发布:淘宝联盟用优惠卷 编辑:程序博客网 时间:2024/05/21 07:53
在这次做项目中,我对自己最满意的就是封装了一下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

 

0 0
原创粉丝点击