首先在ITEye上面看到一个同标题文章,在此说明,此文并非转载自 http://iintothewind.iteye.com/blog/2069522 ,因为这篇文章根本就是错误的,照着上面做,工程可以跑,但是dataSource根本不是druid的

首先说明一下我使用的各个软件版本:

druid版本:1.0.8

<!-- mysql数据库连接池 pool -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.8</version>
</dependency>

mybatis版本:3.2.8

<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.8</version>
</dependency>

MyBatis在非Spring环境下第三方DataSource设置  ,代码如下:

mybatis.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="userDefine">
<environment id="userDefine">
<transactionManager type="JDBC" />
<!-- 配置数据库连接信息 -->
<dataSource type="com.chenjun.mysite.common.MyselfDefineDataSourceFactory">
<property name="driverClass" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/site-aliyun"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mappings/modules/sys/userDao.xml"/>
</mappers>
</configuration>
MyselfDefineDataSourceFactory是 ,自定义datasourceFactory ,作为type属性给上面的mybatis.xml文件
package com.chenjun.mysite.common;

import org.apache.ibatis.datasource.unpooled.UnpooledDataSourceFactory;

import com.alibaba.druid.pool.DruidDataSource;

public class MyselfDefineDataSourceFactory extends UnpooledDataSourceFactory {
public MyselfDefineDataSourceFactory() {
this.dataSource = new DruidDataSource();
}
}

验证结论:

public class UserDao {
private static final String NAME_SPACE = "com.chenjun.mysite.entity.User";
public User test1(){
User user = new User();
SqlSessionFactory sqlSessionFactory;
try {
sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader("mybatis.xml"),"userDefine");
SqlSession session = sqlSessionFactory.openSession();
System.out.println("class="+session.getConfiguration().getEnvironment().getDataSource().getClass().getName());
DataSource ds = session.getConfiguration().getEnvironment().getDataSource();
if(ds instanceof DruidDataSource){
System.out.println("Yes");
}else{
System.out.println("No");
}
user = session.selectOne(NAME_SPACE+"."+"test1");
} catch (IOException e) {
e.printStackTrace();
}
return user;
} }

  最后输出

class=com.alibaba.druid.pool.DruidDataSource
Yes
15:55:09.817 [qtp2104354711-23] DEBUG org.apache.ibatis.transaction.jdbc.JdbcTransaction - Opening JDBC Connection
15:55:09.850 [qtp2104354711-23] INFO com.alibaba.druid.pool.DruidDataSource - {dataSource-1} inited

这才是集成druid的正确打开方式!!!

MyBatis在非Spring环境下第三方DataSource设置-Druid篇的更多相关文章

  1. Mybatis在非spring环境下配置文件中使用外部数据源(druidDatasource)

    Spring环境下, MyBatis可以通过其本身的增强mybatis-spring提供的org.mybatis.spring.SqlSessionFactoryBean来注入第三方DataSourc ...

  2. 精讲RestTemplate第1篇-在Spring或非Spring环境下如何使用

    一.什么是 RestTemplate? RestTemplate是执行HTTP请求的同步阻塞式的客户端,它在HTTP客户端库(例如JDK HttpURLConnection,Apache HttpCo ...

  3. 非Spring环境下使用Mybatis操作数据库的流程

    准备工作 1,  导入mybatis-3.2.7.jar,mysql-connector-5.1.25-bin.jar两个jar包 2,  在数据库中创建一个db_test数据库,库中有一个表为use ...

  4. MyBatis在Spring环境下的事务管理

    MyBatis的设计思想很简单,可以看做是对JDBC的一次封装,并提供强大的动态SQL映射功能.但是由于它本身也有一些缓存.事务管理等功能,所以实际使用中还是会碰到一些问题--另外,最近接触了JFin ...

  5. 七年开发小结MyBatis 在 Spring 环境下的事务管理

    MyBatis的设计思想很简单,可以看做是对JDBC的一次封装,并提供强大的动态SQL映射功能.但是由于它本身也有一些缓存.事务管理等功能,所以实际使用中还是会碰到一些问题——另外,最近接触了JFin ...

  6. Quartz —— Spring 环境下的使用

    一.在 Spring 环境下 Quartz 的使用超级简单. 二.具体使用 1.添加对应的 spring-quartz 的配置文件. 2.新建要执行定时任务的目标类和目标方法,不需要继承 Job 接口 ...

  7. Shiro —— Spring 环境下的使用

    一.使用 1.搭建基础环境 (1)导入 Spring 和 Shiro 的 Jar 包 正常导入 spring jar包 导入日志包 log4j-1.2.15.jar slf4j-api-1.6.1.j ...

  8. Redis(十五)Redis 的一些常用技术(Spring 环境下)

    一.Redis 事务与锁机制 1.Redis的基础事务 在Redis中开启事务的命令是 multi 命令, 而执行事务的命令是 exec 命令.multi 到 exec 命令之间的 Redis 命令将 ...

  9. 非域环境下搭建自动故障转移镜像无法将 ALTER DATABASE 命令发送到远程服务器实例的解决办法

    非域环境下搭建自动故障转移镜像无法将 ALTER DATABASE 命令发送到远程服务器实例的解决办法 环境:非域环境 因为是自动故障转移,需要加入见证,事务安全模式是,强安全FULL模式 做到最后一 ...

随机推荐

  1. JUnit源码分析 - 扩展 - 自定义Rule

    JUnit Rule简述 Rule是JUnit 4.7之后新加入的特性,有点类似于拦截器,可以在测试类或测试方法执行前后添加额外的处理,本质上是对@BeforeClass, @AfterClass, ...

  2. 微信小程序获取二维码参数

    var scene = decodeURIComponent(options.scene)

  3. Windows防火墙开启ping,禁ping的配置方法

    Windows 7,Win 2008 R2,2012 R2: Windows防火墙 --> 高级设置 --> 入站规则 --> 在列表里找到“文件和打印机共享(回显请求 - ICMP ...

  4. [leetcode]66. Plus One加一

    Given a non-empty array of digits representing a non-negative integer, plus one to the integer. The ...

  5. pythone函数基础(14)发送邮件

    导入yagmail模块import yagmailusername='uitestp4p@163.com'password='houyafan123'#生成授权码,qq.163.126都是授权码 ma ...

  6. VBA 插入图片到指定单元格并保存图片为图片文件

    'Upload File to the specific folder Sub UploadImages(s$, c$) 's$ Buttom number 'c$ Specify a locatio ...

  7. 【aardio】如何对listview中某一列,某一行的特定值进行修改?

    用表格创建数组来实现. import win.ui; /*DSG{{*/ var winform = ..win.form( bottom=399;parent=...;right=599;text= ...

  8. Codeforces 1086D Rock-Paper-Scissors Champion

    Description \(N\) 个人排成一排, 每个人都事先决定出剪刀.石头.布. 每次可以任意选两个相邻的人进行决斗. 规则和游戏一样. 但是如果平局, 则掷硬币来决定胜负. 输的人下场. 现要 ...

  9. Linux关闭防火墙命令

    下面是red hat/CentOs7关闭防火墙的命令! 1:查看防火状态 systemctl status firewalld service  iptables status 2:暂时关闭防火墙 s ...

  10. BFC和清除浮动

    1.清浮动(不考虑兼容的话这一项够用了): .clear:after{ content:''; display:block; clear:both; } 兼容ie6或7 加一个 .clear{ *zo ...