Jodd DB- 如何自定义数据源

解决思路

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

首先,实现接口

文件 webit/db/connection/DruidConnectionProvider.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 官方文档

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

在程序启动的时候


// 初始化连接源
ConnectionProvider connectionProvider= new DruidConnectionProvider();
connectionProvider.init();

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

或者自己管理DbSession


public DbSession getSession() {
    //注意: 传入已经初始化的connectionProvider
    return new DbSession(connectionProvider);
 }

你可能感兴趣的:(jodd,数据源配置,DbOom)