Dbutils+HikariCP简单的Java orm

 
hibernate,mybatis是java中数据库常用的数据库orm框架,很多时候我们用不了框架的那么多功能,
又是配置又是xml,注解写起来太麻烦,网上找到 Dbutils这个类库,核心代码很小,就拿试试手,
做了个简单的包装,在小项目使用。
依赖:
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.45</version>
</dependency>
<dependency>
    <groupId>commons-dbutils</groupId>
    <artifactId>commons-dbutils</artifactId>
    <version>1.7</version>
</dependency>
<dependency>
    <groupId>com.zaxxer</groupId>
    <artifactId>HikariCP</artifactId>
    <version>2.7.2</version>
</dependency>
hikari.properties配置

jdbcUrl=jdbc:mysql://10.27.106.22:3306/test
username=datalog
password=fEaf1f0f62d320
maximumPoolSize=30
minimumIdle=5
connectionTestQuery=SELECT 1
autoCommit=true
dataSource.cachePrepStmts=true
dataSource.prepStmtCacheSize=250
dataSource.prepStmtCacheSqlLimit=2048
dataSource.useServerPrepStmts=true
dataSource.useLocalSessionState=true
dataSource.useLocalTransactionState=true
dataSource.rewriteBatchedStatements=true
dataSource.cacheResultSetMetadata=true
dataSource.cacheServerConfiguration=true
dataSource.elideSetAutoCommits=true
dataSource.maintainTimeStats=false

   DbUtil.java

package com.util;

import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.ResultSetHandler;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.MapHandler;
import org.apache.commons.dbutils.handlers.MapListHandler;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.List;
import java.util.Map;

public class DbUtil {
    private static Logger log = LoggerFactory.getLogger(DbUtil.class);
    private static HikariDataSource dataSource;
    private static QueryRunner queryRunner;
    static {
        HikariConfig config = new HikariConfig("/config/hikari.properties");
        dataSource = new HikariDataSource(config);
        queryRunner = new QueryRunner(dataSource);
    }

    public static <T> T query(String sql , ResultSetHandler<T> resultSetHandler,Object... params){
        T result = null;
        try {
            result = queryRunner.query(sql,resultSetHandler,params);
        }catch (Exception e){
            log.error("",e);
        }
        return result;
    }

    public static int update(String sql,Object... params){
        int result = 0;
        try {
            result = queryRunner.update(sql,params);
        }catch (Exception e){
            log.error("",e);
        }
        return result;
    }
    public static int insert(String sql,Object... params ){
        int result = 0;
        try {
            result = queryRunner.execute(sql,params);
        }catch (Exception e){
            log.error("",e);
        }
        return result;
    }
    public static Map<String,Object> findById(String table, int id){
        String sql = "select * from "+table +" where id = ?";
        return query(sql, new MapHandler(),id);
    }
    public static <T> T findById(String table , int id , BeanHandler<T> beanHandler){
        String sql = "select * from "+table +" where id = ?";
        return query(sql, beanHandler,id);
    }
    public static List<Map<String,Object>> findByCondition(String table, String condition){
        String sql = "select * from "+table +" where "+ condition;
        return query(sql, new MapListHandler());
    }

    public static <T> List<T> findByCondition(String table, String condition ,BeanListHandler<T> beanListHandler ){
        String sql = "select * from "+table +" where "+ condition;
        return query(sql, beanListHandler);
    }

    public static List<Map<String,Object>> findByCondition(String table, String condition,String sort){
        String sql = "select * from "+table +" where "+ condition + "order by "+ sort;
        return query(sql, new MapListHandler());
    }
    public static List<Map<String,Object>> findByCondition(String table, String condition,String sort,String limit){
        String sql = "select * from "+table +" where "+ condition + "order by "+ sort + limit;
        return query(sql, new MapListHandler());
    }
    public static void close(){
        dataSource.close();
    }

}

测试代码:

import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import java.util.List;

public class Test {
    public static void main(String[] args) throws Exception{

        User user = DbUtil.findById("user",1, new BeanHandler<User>(User.class));
        System.out.println("id:" + user.getId()+",name:"+user.getName());
        String sql = "select * from user limit 2";
        List<User> list =  DbUtil.query(sql,new BeanListHandler<User>(User.class));
        for (User u: list){
            System.out.println("id:" + u.getId()+",name:"+u.getName());
        }
        DbUtil.close();
    }
}

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值