1:maven引入相关jar包
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.3.3.RELEASE</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.26</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.1</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.22</version>
<scope>runtime</scope>
</dependency>
2:xml配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--配置数据源 使用阿里的druid连接池-->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
<property name="driverClassName" value="${jdbc_driver}"/>
<property name="url" value="${jdbc_url}"/>
<property name="username" value="${jdbc_name}"/>
<property name="password" value="${jdbc_password}"/>
<!-- 初始化连接数量 -->
<property name = "initialSize" value = "${jdbc_initialSize}" />
<!-- 最大并发连接数 -->
<property name = "maxActive" value = "${jdbc_maxActive}" />
<!-- 最小空闲连接数 -->
<property name = "minIdle" value = "${jdbc_minIdle}" />
<!-- 配置获取连接等待超时的时间单位毫秒。配置了maxWait之后,缺省启用公平锁,并发效率会有所下降,如果需要可以通过配置useUnfairLock属性为true使用非公平锁。-->
<property name = "maxWait" value = "${jdbc_maxWait}" />
<!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
<property name = "timeBetweenEvictionRunsMillis" value ="${jdbc_timeBetweenEvictionRunsMillis}" />
<!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
<property name = "minEvictableIdleTimeMillis" value ="${jdbc_minEvictableIdleTimeMillis}" />
<!--用来检测连接是否有效的sql,要求是一个查询语句。如果validationQuery为null,testOnBorrow、testOnReturn、testWhileIdle都不会其作用。-->
<property name = "validationQuery" value = "${jdbc_validationQuery}" />
<!--建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。-->
<property name = "testWhileIdle" value = "${jdbc_testWhileIdle}" />
<!--申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。-->
<property name = "testOnBorrow" value = "${jdbc_testOnBorrow}" />
<!--归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能-->
<property name = "testOnReturn" value = "${jdbc_testOnReturn}" />
<!--要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true。在Druid中,不会存在Oracle下PSCache占用内存过多的问题,可以把这个数值配置大一些,比如说100-->
<property name="poolPreparedStatements" value="${jdbc_poolPreparedStatements}" />
<property name = "maxOpenPreparedStatements" value ="${jdbc_maxOpenPreparedStatements}" />
<!-- 配置监控统计拦截的filters -->
<property name="filters" value="${jdbc_filters}" />
</bean>
<!--创建sqlSession工厂-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="configLocation" value="classpath:/myBatis.xml"/>
<property name="dataSource" ref="dataSource"/>
<property name="typeAliasesPackage" value="com.zc.domain.po" />
<property name="mapperLocations" value="classpath:/mappers/*Mapper.xml"/>
</bean>
<!--注册mapper-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
<property name="basePackage" value="com.zc.dao"/>
</bean>
<!--声明式事务-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
</beans>
3:jdbc.properties配置
jdbc_driver=com.mysql.jdbc.Driver
jdbc_url=jdbc:mysql://localhost:3306/zc?createDatabaseIfNotExist=true&characterEncoding=utf-8&useUnicode=true&zeroDateTimeBehavior=convertToNull
jdbc_name=root
jdbc_password=zhangchi
jdbc_initialSize=1
jdbc_maxActive=20
jdbc_minIdle=1
jdbc_maxWait=60000
jdbc_timeBetweenEvictionRunsMillis=60000
jdbc_minEvictableIdleTimeMillis=300000
jdbc_validationQuery=SELECT 'x'
jdbc_testWhileIdle=true
jdbc_testOnBorrow=false
jdbc_testOnReturn=false
jdbc_poolPreparedStatements=true
jdbc_maxOpenPreparedStatements=20
jdbc_filters=stat