mybatis自定义数据源

前面我们使用mybatis的时候,配置了默认的数据源。mybatis也支持自定义数据源,比如阿里巴巴的德鲁伊,比大名鼎鼎的HikariDataSource等等。mybatis数据源的配置其实是根据一个工厂来创建的。所以在自定义数据源的时候要实现这个工厂

/**
 * @author Clinton Begin
 * 连接池工厂
 */
public interface DataSourceFactory {

  /**
   * 我们在xml中配置的数据库信息
   * @param props
   */
  void setProperties(Properties props);

  /**
   * 获取数据源,由实现者自己实现
   * @return
   */
  DataSource getDataSource();

}

下面我们就用HikariDataSource试试,代码如下

public class HikariDataSourceFactory implements DataSourceFactory {

    private DataSource dataSource;

    @Override
    public void setProperties(Properties props) {
        HikariConfig hikariConfig = new HikariConfig();
        hikariConfig.setUsername(props.getProperty("username"));
        hikariConfig.setPassword(props.getProperty("password"));
        hikariConfig.setJdbcUrl(props.getProperty("url"));
        hikariConfig.setDriverClassName(props.getProperty("driver"));
        dataSource = new HikariDataSource(hikariConfig);

    }

    @Override
    public DataSource getDataSource() {
        return dataSource;
    }
}

具体你自定义的数据源怎么创建,你要找到对应的api文档。然后还要将我们的数据源工厂配置到xml中

<environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <!--            自定义数据源-->
            <dataSource type="com.bky.datasource.HikariDataSourceFactory">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mydb3?useSSL=false"/>
                <property name="username" value="root"/>
                <property name="password" value="Shw@root"/>
            </dataSource>
        </environment>
    </environments>

搞定!!!!!!!!!!!!!!!!!!!

posted @   诸葛匹夫  阅读(191)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示