Spring集成Mybatis
一、配置数据源
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="${db.bbs.url}"/> <property name="username" value="${db.bbs.username}"/> <property name="password" value="${db.bbs.password}"/> <!-- 配置初始化大小、最小、最大 --> <property name="initialSize" value="${db.bbs.initialSize}"/> <property name="minIdle" value="${db.bbs.minIdle}"/> <property name="maxActive" value="${db.bbs.maxPoolSize}"/> <!-- 配置获取连接等待超时的时间 --> <property name="maxWait" value="60000"/> <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 --> <property name="timeBetweenEvictionRunsMillis" value="3000"/> <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 --> <property name="minEvictableIdleTimeMillis" value="300000"/> <property name="validationQuery" value="SELECT 'x'"/> <property name="testWhileIdle" value="true"/> <!-- 这里建议配置为true,防止取到的连接不可用 --> <property name="testOnBorrow" value="true"/> <property name="testOnReturn" value="false"/> <!-- 打开PSCache,并且指定每个连接上PSCache的大小 --> <property name="poolPreparedStatements" value="true"/> <property name="maxPoolPreparedStatementPerConnectionSize" value="20"/> <!-- 获取数据库连接的时候执行sql:set names utf8mb4; --> <property name="connectionInitSqls" value="set names utf8mb4 ;"/> <!-- 配置监控统计拦截的filters --> <property name="filters" value="stat"/> <!-- 配置关闭长时间不使用的连接 --> <!-- 是否清理removeAbandonedTimeout秒没有使用的活动连接,清理后并没有放回连接池(针对未被close的活动连接) --> <property name="removeAbandoned" value="true"/> <!-- 活动连接的最大空闲时间,1800秒,也就是30分钟 --> <property name="removeAbandonedTimeout" value="1800"/> <!-- 连接池收回空闲的活动连接时是否打印消息 --> <property name="logAbandoned" value="true"/> </bean>
二、配置SqlSessionFactory
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <!--Mybatis全局配置--> <property name="configLocation" value="classpath:spring/mybatis-config.xml"/> <!--model路径--> <property name="typeAliasesPackage" value="com.wslook.model"/> <property name="mapperLocations"> <list> <value>classpath:mapper/*.xml</value> </list> </property> <property name="plugins"> <array> <bean class="com.github.pagehelper.PageInterceptor"> <property name="properties"> <value> helperDialect=mysql reasonable=true </value> </property> </bean> </array> </property> </bean>
三、Mybatis全局配置文件(非必须)
<configuration> <settings> <!-- Globally enables or disables any caches configured in any mapper under this configuration --> <setting name="cacheEnabled" value="true"/> <!-- Sets the number of seconds the driver will wait for a response from the database --> <setting name="defaultStatementTimeout" value="3000"/> <!-- Enables automatic mapping from classic database column names A_COLUMN to camel case classic Java property names aColumn --> <setting name="mapUnderscoreToCamelCase" value="true"/> <!-- Allows JDBC support for generated keys. A compatible driver is required. This setting forces generated keys to be used if set to true, as some drivers deny compatibility but still work --> <setting name="useGeneratedKeys" value="true"/> </settings> <!-- Continue going here --> <plugins> <plugin interceptor="com.github.pagehelper.PageInterceptor"> <property name="dialect" value="mysql"/> <property name="pageSizeZero" value="true"/> <!-- 如果pageNum<1会查询第一页,如果pageNum>pages会查询最后一页(false返回空);--> <property name="reasonable" value="true"/> </plugin> </plugins> </configuration>
四、配置mapper路径
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.wslook.dao"/> </bean>
五、配置sqlSessionTemplate(非必须)
<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate"> <constructor-arg index="0" ref="sqlSessionFactory" /> </bean>