mybatis配置第三方连接池

mybatis配置JDBCPool连接池,废话不说,直接上文。

1.创建一个自己的数据源工厂类实现 org.apache.ibatis.datasource.DataSourceFactory

添加属性

注意属性要用连接池提供的数据源对象:

org.apache.tomcat.jdbc.pool.DataSource dataSource;



Java代码

  1. /**
    • JDBCPOOL的实现类
  2. *
    • @author Frank
    • @date 2013-1-5 JDBCPoolDataSourceFactory.java
  3. */
  4. public class JDBCPoolDataSourceFactory implements DataSourceFactory {
  5. private static final String DRIVER_PROPERTY_PREFIX = “driver.”;
    9.10. private static final int DRIVER_PROPERTY_PREFIX_LENGTH = DRIVER_PROPERTY_PREFIX.length();
    11.12. // 定义数据源
  6. private DataSource dataSource;
    14.15.16.17. /**
    • 构造器
  7. */
  8. public JDBCPoolDataSourceFactory() {
  9. dataSource = new DataSource();
  10. }
    23.24.25.26. /**
    • 获取JDBCPOOL数据源
  11. */
  12. @Override
  13. public DataSource getDataSource() {
  14. return dataSource;
  15. }
    33.34.35.36. /**
    • 对JDBCPOOL属性值进行设置
  16. */
  17. @Override
  18. public void setProperties(Properties properties) {
  19. // 设置数据库驱动类名称
  20. Properties driverProperties = new Properties();
  21. MetaObject metaDataSource = MetaObject.forObject(dataSource);
  22. for (Object key : properties.keySet()) {
  23. String propertyName = ( String ) key;
  24. if (propertyName.startsWith(DRIVER_PROPERTY_PREFIX)) {
  25. String value = properties.getProperty(propertyName);
  26. driverProperties.setProperty(propertyName.substring(DRIVER_PROPERTY_PREFIX_LENGTH), value);
  27. } else if (metaDataSource.hasSetter(propertyName)) {
  28. String value = ( String ) properties.get(propertyName);
  29. Object convertedValue = convertValue(metaDataSource, propertyName, value);
  30. metaDataSource.setValue(propertyName, convertedValue);
  31. } else {
  32. throw new DataSourceException(“Unknown DataSource property: “ + propertyName);
  33. }
  34. }
  35. if (driverProperties.size() > 0) {
  36. metaDataSource.setValue(“driverProperties”, driverProperties);
  37. }
  38. }
    61.62.63.64. private Object convertValue(MetaObject metaDataSource, String propertyName, String value) {
  39. Object convertedValue = value;
  40. Class< ? > targetType = metaDataSource.getSetterType(propertyName);
  41. if (targetType == Integer.class || targetType == int.class) {
  42. convertedValue = Integer.valueOf(value);
  43. } else if (targetType == Long.class || targetType == long.class) {
  44. convertedValue = Long.valueOf(value);
  45. } else if (targetType == Boolean.class || targetType == boolean.class) {
  46. convertedValue = Boolean.valueOf(value);
  47. }
  48. return convertedValue;
  49. }

2.完成mybatis数据源配置文件mybatis-config.xml

<?xml version=”1.0” encoding=”UTF-8”?>



Xml代码

  1. <!DOCTYPE configuration
  2. PUBLIC “-//mybatis.org//DTD Config 3.0//EN”
  3. http://mybatis.org/dtd/mybatis-3-config.dtd"&gt;
  4. <configuration>
  5. <environments default=”development”>
  6. <environment id=”development”>
  7. <transactionManager type=”JDBC”/>
  8. <dataSource type=”com.shdy.db.JDBCPoolDataSourceFactory”>
  9. <property name=”driverClassName” value=”oracle.jdbc.driver.OracleDriver”/>
  10. <property name=”url” value=”jdbc:oracle:thin:@10.21.17.11:1521:XX”/>
  11. <property name=”username” value=”XXXX”/>
  12. <property name=”password” value=”XXXX”/>
  13. <property name=”testWhileIdle” value=”true” />
  14. <property name=”testOnBorrow” value=”true” />
  15. <property name=”testOnReturn” value=”false” />
  16. <property name=”validationQuery” value=”SELECT 1 FROM SYSIBM.SYSDUMMY1” />
  17. <property name=”validationInterval” value=”30000” />
  18. <property name=”timeBetweenEvictionRunsMillis” value=”30000” />
  19. <property name=”maxActive” value=”50” />
  20. <property name=”maxIdle” value=”30” />
  21. <property name=”minIdle” value=”10” />
  22. <property name=”maxWait” value=”5000” />
  23. <property name=”initialSize” value=”5” />
  24. <property name=”removeAbandonedTimeout” value=”36000” />
  25. <property name=”removeAbandoned” value=”true” />
  26. <property name=”logAbandoned” value=”true” />
  27. <property name=”minEvictableIdleTimeMillis” value=”30000” />
  28. <property name=”jmxEnabled” value=”true” />
  29. <property name=”jdbcInterceptors”
  30. value=”org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer” />
    31.32. </dataSource>
  31. </environment>
  32. </environments>
  33. <mappers>
  34. <mapper resource=”com/shdy/db/sql/User.xml”/>
  35. </mappers>
  36. </configuration>

注意: <property name=”driverClassName” value=”oracle.jdbc.driver.OracleDriver”/>
分享到