Jodd DB- 如何自定义数据源

本文详细介绍了如何利用Jodd提供的ConnectionProvider接口与国产优秀连接池Druid结合,实现高效数据库连接池管理。通过配置文件设置Druid参数,实现了数据库连接的初始化、获取、关闭等操作,简化了数据库连接管理流程。

解决思路

实际上Jodd已经提供这种需求的接口,ConnectionProvider, 我们只需要实现这个接口就可以了 下面以国产的优秀的连接池#Druid#为例

首先,实现接口

文件 webit/db/connection/DruidConnectionProvider.java

<!-- lang: java -->
package webit.db.connection;

import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Map;
import java.util.Properties;
import jodd.db.DbSqlException;
import jodd.db.connection.ConnectionProvider;
import jodd.util.PropertiesUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 *
 * @author zqq90
 */
public class DruidConnectionProvider implements ConnectionProvider {

    private final static String DRUID_PROPS_FILE = "/druid.properties"; //这里是默认加载的配置文件
    private DruidDataSource ds;

    @Override
    public void init() {
        Properties properties = PropertiesUtil.createFromClasspath(DRUID_PROPS_FILE);
        try {
            ds = createDataSource(properties);
        } catch (Exception ex) {
            throw new DbSqlException(ex);
        }
    }

    @Override
    public Connection getConnection() {
        try {
            return ds.getConnection();
        } catch (SQLException ex) {
            throw new DbSqlException(ex);
        }
    }

    @Override
    public void closeConnection(Connection cnctn) {
        try {
            //不用担心,这里不是真正的关闭链接,在Druid里实际上是回收了链接
            cnctn.close();
        } catch (SQLException ex) {
            throw new DbSqlException(ex);
        }
    }

    @Override
    public void close() {
        ds.close(); 
    }

    private static DruidDataSource createDataSource(Properties properties) throws Exception {
        DruidDataSource dataSource = new DruidDataSource();
        DruidDataSourceFactory.config(dataSource, (Map) properties);
        return dataSource;
    }
}

是的,额外的Java代码只需这么多

Druid 配置

本实例设置的配置文件是 /druid.properties

url=jdbc:......
username=root
password=***

initialSize=1
minIdle=1
maxActive=20

其他设置请参考 druid 官方文档

最后一步,该怎么使用呢?

在程序启动的时候

<!-- lang: java -->
// 初始化连接源
ConnectionProvider connectionProvider= new DruidConnectionProvider();
connectionProvider.init();

//把 connectionProvider 设置成默认的连接源
DbManager.getInstance().setConnectionProvider(connectionProvider);

或者自己管理DbSession

<!-- lang: java -->
public DbSession getSession() {
    //注意: 传入已经初始化的connectionProvider
    return new DbSession(connectionProvider);
 }

转载于:https://my.oschina.net/zqq90/blog/186191

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值