MyBatis进阶七:MyBatis整合C3P0连接池;

Mybatis整合其他连接池,本篇博客以整合C3P0连接池为例。 

目录

MyBatis整合C3P0连接池的步骤:

(1)第一步:通过maven引入C3P0的依赖;

(2)第二步:创建C3P0和Mybatis兼容所需的数据源工厂类

(3)第三步:在mybatis-config.xml核心配置文件中设置

(4)第四步,测试


连接池

但是目前,在主流开发中,不推荐使用Mybatis自带的连接池;C3P0,Druid,DBCP等连接池都更强大;但是,Mybatis默认没有提供如C3P0直接的开发方式,我们需要对原始的Mybatis进行扩展,才能够使用C3P0这些连接池。


MyBatis整合C3P0连接池的步骤:

(关于C3P0连接池可以参考:JDBC入门十五:连接池(3):C3P0连接池入门;

(1)第一步:通过maven引入C3P0的依赖;

 

(2)第二步:创建C3P0和Mybatis兼容所需的数据源工厂类

如果想让mybatis支持C3P0,需要额外扩展一个类;

package com.imooc.mybatis.datasource;

import com.mchange.v2.c3p0.ComboPooledDataSource;
import org.apache.ibatis.datasource.unpooled.UnpooledDataSourceFactory;

/**
 * C3P0的数据源工厂类
 */
public class C3P0DataSourceFactory extends UnpooledDataSourceFactory {
    public C3P0DataSourceFactory(){
        this.dataSource = new ComboPooledDataSource();
    }
}

说明:

 

(3)第三步:在mybatis-config.xml核心配置文件中设置

和原先相比,变动如下:

主要是属性的名称都变了,因为不同的连接池对这些属性的命名要求是不同的啦,这些属性的名字不好记,需要参考相应连接池的文档(这儿是需要参考C3P0的文档)来编写。

 

(4)第四步,测试

随便一个测试代码:随便啦,这不是重点

package com.imooc.mybatis;

import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.imooc.mybatis.dto.GoodsDTO;
import com.imooc.mybatis.entity.Goods;
import com.imooc.mybatis.entity.GoodsDetail;
import com.imooc.mybatis.entity.Student;
import com.imooc.mybatis.utils.MyBatisUtils;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;

import java.io.IOException;
import java.io.Reader;
import java.sql.Connection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * JUnit单元测试类
 */
public class MyBatisTestor {

    @Test
    public void testSelectPage() throws Exception {
        SqlSession session = null;
        try {
            session = MyBatisUtils.openSession();
            // PageHelper.startPage()对即将到来的下一次查询进行分页处理;
            // 比如下面就是第三页,每页10条数据;
            PageHelper.startPage(3, 10);
            Page<Goods> page = (Page)session.selectList("goods.selectPage");
            System.out.println("总页数:"+page.getPages());
            System.out.println("总记录数:"+page.getTotal());
            System.out.println("开始行号:"+page.getStartRow());
            System.out.println("结束行号:"+page.getEndRow());
            System.out.println("当前页码:"+page.getPageNum());
            List<Goods> data = page.getResult();  // 获取当前页数据
            for (Goods goods:data){
                System.out.println(goods.getTitle());
            }
        } catch (Exception e) {
            throw e;
        }finally {
            MyBatisUtils.closeSession(session);
        }
    }
}

运行结果分析:

(1) 

(2)其中有条日志如下:其中的BasicResourcePool:

[main] 19:02:41:647 DEBUG c.m.v.resourcepool.BasicResourcePool - com.mchange.v2.resourcepool.BasicResourcePool@14cd1699 config: [start -> 5; min -> 5; max -> 20; inc -> 3; num_acq_attempts -> 30; acq_attempt_delay -> 1000; check_idle_resources_delay -> 0; max_resource_age -> 0; max_idle_time -> 0; excess_max_idle_time -> 0; destroy_unreturned_resc_time -> 0; expiration_enforcement_delay -> 0; break_on_acquisition_failure -> false; debug_store_checkout_exceptions -> false; force_synchronous_checkins -> false]

列出了初始化时的基本配置信息:start初始数量,min最小数量,max最大数量等;这些信息都是C3P0自动给我们输出的;

(3)

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值