首先在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的正確打開方式!!!
