文档章节

DbHelper

无知的小孩
 无知的小孩
发布于 2017/05/10 18:59
字数 455
阅读 18
收藏 0

package my.db;

import java.math.BigInteger;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.ColumnListHandler;
import org.apache.commons.dbutils.handlers.MapHandler;
import org.apache.commons.dbutils.handlers.MapListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

public class DbHelper {
    
    private final static Log log = LogFactory.getLog(DbHelper.class);
    private final static QueryRunner _g_runner = new QueryRunner(); 
  
    public static Connection getConnection() {
        try{
            return DBManager.getConnection();
        }catch(SQLException e){
            log.info("{}",e);
        }
        return null;
    }  
    
    @SuppressWarnings("rawtypes")
    private final static ColumnListHandler _g_columnListHandler = new ColumnListHandler(){
        @Override
        protected Object handleRow(ResultSet rs) throws SQLException {
            Object obj = super.handleRow(rs);
            if(obj instanceof BigInteger)
                return ((BigInteger)obj).longValue();
            return obj;
        }
        
    };
    
    @SuppressWarnings("rawtypes")
    private final static ScalarHandler _g_scaleHandler = new ScalarHandler(){
        @Override
        public Object handle(ResultSet rs) throws SQLException {
            Object obj = super.handle(rs);
            if(obj instanceof BigInteger)
                return ((BigInteger)obj).longValue();
            return obj;
        }        
    };
    
    @SuppressWarnings("serial")
    private final static List<Class<?>> PrimitiveClasses = new ArrayList<Class<?>>(){{
        add(Long.class);
        add(Integer.class);
        add(String.class);
        add(java.util.Date.class);
        add(java.sql.Date.class);
        add(java.sql.Timestamp.class);
    }};
    
    private final static boolean _IsPrimitive(Class<?> cls) {
        return cls.isPrimitive() || PrimitiveClasses.contains(cls) ;
    }
    
    /**
     * 执行INSERT/UPDATE/DELETE语句
     * @param sql
     * @param params
     * @return
     */
    public static int update(String sql, Object...params) {
        try{
            return _g_runner.update(getConnection(), sql, params);
        }catch(SQLException e){
            log.info("{}",e);
        }
        return 0;
    }
    
    /**
     * 批量执行指定的SQL语句
     * @param sql
     * @param params
     * @return
     */
    public static int[] batch(String sql, Object[][] params) {
        try{
            int paramLen = params.length;
            for(int i=0;i<paramLen;i++){
                if(params[i] == null){
                    log.info("数组指定长度但未赋值,数组第["+i+"]个");
                    return null;
                }
            }
            return _g_runner.batch(getConnection(), sql, params);
        }catch(SQLException e){
            log.info("{}",e);
        }
        return null;
    }
    
    @SuppressWarnings({ "unchecked", "rawtypes" })
    public static <T> T Get(Class<T> beanClass, String sql, Object...params) {
        try{
            return (T)_g_runner.query(getConnection(), sql, _IsPrimitive(beanClass)?_g_scaleHandler:new BeanHandler(beanClass), params);
        }catch(SQLException e){
            log.info("{}",e);
        }
        return null;
    }
    
    @SuppressWarnings({ "unchecked", "rawtypes" })
    public static <T> List<T> query(Class<T> beanClass, String sql, Object...params) {
        try{
            return (List<T>)_g_runner.query(getConnection(), sql, _IsPrimitive(beanClass)?_g_columnListHandler:new BeanListHandler(beanClass), params);
        }catch(SQLException e){
            log.info("{}",e);
        }
        return null;
    }
    
    public static HashMap<String, Object> Get(String sql, Object...params) {
        try{
            return (HashMap<String, Object>)_g_runner.query(getConnection(), sql,new MapHandler(), params);
        }catch(SQLException e){
            log.info("{}",e);
        }
        return null;
    }
    
    public static List<Map<String, Object>> query(String sql, Object...params) {
        try{
            return (List<Map<String,Object>>)_g_runner.query(getConnection(), sql, new MapListHandler(), params);
        }catch(SQLException e){
            log.info("{}",e);
        }
        return null;
    }
    
    /**
     * 执行统计查询语句,语句的执行结果必须只返回一个数值
     * @param sql
     * @param params
     * @return
     */
    @SuppressWarnings("unchecked")
    public static long stat(String sql, Object...params) {
        try{
            Number num = (Number)_g_runner.query(getConnection(), sql, _g_scaleHandler, params);
            return (num!=null)?num.longValue():-1;
        }catch(SQLException e){
            log.info("{}",e);
        }
        return 0l;
    }

}
 

© 著作权归作者所有

无知的小孩
粉丝 1
博文 70
码字总数 19034
作品 0
贵阳
后端工程师
私信 提问

暂无文章

Jenkins系列_插件安装及报错处理

进入Jenkins之后我们可以进行插件的安装,插件管理位于以下模块: 发现上面报了一堆错误,是因为插件的依赖没有安装好,那么这一节,就先把这些错误解决掉吧。解决完成后,也就基本会使用插件...

shzwork
今天
2
0
mysql mysql的所有查询语句和聚合函数(整理一下,忘记了可以随时看看)

查询所有字段 select * from 表名; 查询自定字段 select 字段名 from 表名; 查询指定数据 select * from 表名 where 条件; 带关键字IN的查询 select * from 表名 where 条件 [not] in(元素...

edison_kwok
昨天
9
0
多线程同时加载缓存实现

import com.google.common.cache.Cache;import com.google.common.cache.CacheBuilder;import java.util.concurrent.ExecutionException;import java.util.concurrent.ExecutorServi......

暗中观察
昨天
3
0
利用VisualVM 内存查看

准备工作,建几个测试类。等下就是要查看这几个类里面的属性 package visualvm;public class MultiObject { private String str; private int i; MultiObject(String str...

冷基
昨天
2
0
组装一台工作游戏两用机

一、配置清单如下: 分类 项目 价格(元) 主板 华硕(ASUS)TUF Z370-PLUS GAMING II 电竞特工 Z370二代 支持9代CPU 1049 CPU 英特尔(Intel) i7 8700K 酷睿六核 盒装CPU处理器 2640 风扇 九...

mbzhong
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部