java 高性能dbutil_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;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值