java DBUtil的简单封装(dbutil+tomcat jdbcpool)详解编程语言

package org.home.util; 
 
import java.sql.Connection; 
import java.sql.SQLException; 
import java.util.List; 
import org.apache.commons.dbutils.QueryRunner; 
import org.apache.commons.dbutils.ResultSetHandler; 
import org.apache.commons.dbutils.handlers.BeanListHandler; 
import org.apache.tomcat.jdbc.pool.DataSource; 
import org.apache.tomcat.jdbc.pool.PoolProperties; 
 
public class DBUtil { 
    private static DataSource ds; 
    private static QueryRunner runner; 
    static { 
        PoolProperties p = new PoolProperties(); 
        p.setUrl("jdbc:mysql://localhost:3306/home"); 
        p.setDriverClassName("com.mysql.jdbc.Driver"); 
        p.setUsername("root"); 
        p.setPassword("sa"); 
        p.setJmxEnabled(true); 
        p.setTestWhileIdle(false); 
        p.setTestOnBorrow(true); 
        p.setValidationQuery("SELECT 1"); 
        p.setTestOnReturn(false); 
        p.setValidationInterval(30000); 
        p.setTimeBetweenEvictionRunsMillis(30000); 
        p.setMaxActive(100); 
        p.setInitialSize(10); 
        p.setMaxWait(10000); 
        p.setRemoveAbandonedTimeout(60); 
        p.setMinEvictableIdleTimeMillis(30000); 
        p.setMinIdle(10); 
        p.setLogAbandoned(true); 
        p.setRemoveAbandoned(true); 
        p.setJdbcInterceptors("org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;" 
                + "org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer"); 
        ds = new DataSource(); 
        ds.setPoolProperties(p); 
        runner = new QueryRunner(); 
    } 
 
    private static Connection getConnection() throws SQLException { 
        return ds.getConnection(); 
    } 
 
    /** 
     * 删除 
     * @param tableName 
     * @param id 
     * @return 
     */ 
    public static boolean delete(String tableName, long id) { 
        String sql = "delete from " + tableName + " where id=?"; 
        int i = 0; 
        boolean flag = false; 
        Connection con = null; 
        try { 
            con = getConnection(); 
            i = runner.update(con, sql, id); 
            if (i >= 0) { 
                flag = true; 
            } 
        } catch (SQLException e) { 
            System.out.println(e.getMessage()); 
        } finally { 
            if (con != null) { 
                try { 
                    con.close(); 
                } catch (SQLException e) { 
                    System.out.println(e.getMessage()); 
                } 
            } 
        } 
        return flag; 
    } 
 
    /** 
     * 修改/添加  
     * @param sql 
     * @param pring 
     * @return 
     */ 
    public static boolean update(String sql, Object pring[]) { 
        int i = 0; 
        boolean flag = false; 
        Connection con = null; 
        try { 
            con = getConnection(); 
            i = runner.update(con, sql, pring); 
            if (i >= 0) { 
                flag = true; 
            } 
        } catch (SQLException e) { 
            e.printStackTrace(); 
        } finally { 
            if (con != null) { 
                try { 
                    con.close(); 
                } catch (SQLException e) { 
                    e.printStackTrace(); 
                } 
            } 
        } 
        return flag; 
    } 
 
    /** 
     * 查询 
     * @param sql 
     * @param rsh 
     * @return 
     */ 
    public static List<?> query(String sql, ResultSetHandler<?> rsh) {   
        List<?> result = null;   
        Connection con = null; 
        try {   
            con = getConnection(); 
            result = (List<?>) runner.query(con, sql, rsh); 
        } catch (SQLException e) {             
            e.printStackTrace();   
        } finally { 
            if (con!=null) { 
                try { 
                    con.close(); 
                } catch (SQLException e) { 
                    e.printStackTrace(); 
                } 
            } 
        } 
        return result;   
    }   
 
    /** 
     * 分页查询 
     * @param sql 
     * @param rsh 
     * @param page 
     * @param pageSize 
     * @return 
     */ 
    public static List<?> query(String sql, ResultSetHandler<?> rsh, int page, int pageSize) {   
        List<?> result = null;   
        Connection con = null; 
        try {   
            con = getConnection(); 
            result = (List<?>) runner.query(con, sql + " limit " + page*pageSize + "," + pageSize, rsh); 
        } catch (SQLException e) {             
            e.printStackTrace();   
        } finally { 
            if (con!=null) { 
                try { 
                    con.close(); 
                } catch (SQLException e) { 
                    e.printStackTrace(); 
                } 
            } 
        } 
        return result;   
    }  
 
    /** 
     * 根据id查询 
     * @param clasz 
     * @param id 
     * @return 
     */ 
    public static Object get(Class<?> clasz, int id) { 
        Connection con = null; 
        Object obj = null; 
        try {   
            con = getConnection(); 
            @SuppressWarnings({ "unchecked", "rawtypes" }) 
            List<?>result = (List<?>) runner.query(con,  
                    "select * from " + clasz.getSimpleName().toLowerCase() + " where id=" + id,  
                    new BeanListHandler(clasz)); 
            if (result!=null && result.size()>0) { 
                obj = result.get(0); 
            } 
        } catch (SQLException e) {             
            e.printStackTrace();   
        } finally { 
            if (con!=null) { 
                try { 
                    con.close(); 
                } catch (SQLException e) { 
                    e.printStackTrace(); 
                } 
            } 
        } 
        return obj;          
    } 
} 

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/10421.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论