spring 集成mybatis

1、pom.xml:

项目主要依赖的jar包有Spring核心包、Spring AOP包、MyBatis ORM包、MyBatis-Spring适配包、JSTL、JUnit、Log4j2等,具体的pom.xml文件如下:

 1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 2     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 3     <modelVersion>4.0.0</modelVersion>
 4     <groupId>com.zhangguo</groupId>
 5     <artifactId>BookStore</artifactId>
 6     <version>0.0.1</version>
 7     <packaging>war</packaging>
 8 
 9     <properties>
10         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
11         <spring.version>4.3.0.RELEASE</spring.version>
12     </properties>
13 
14     <dependencies>
15         <!--Spring框架核心库 -->
16         <dependency>
17             <groupId>org.springframework</groupId>
18             <artifactId>spring-context</artifactId>
19             <version>${spring.version}</version>
20         </dependency>
21         <!-- aspectJ AOP 织入器 -->
22         <dependency>
23             <groupId>org.aspectj</groupId>
24             <artifactId>aspectjweaver</artifactId>
25             <version>1.8.9</version>
26         </dependency>
27         <!-- Spring Web -->
28         <dependency>
29             <groupId>org.springframework</groupId>
30             <artifactId>spring-web</artifactId>
31             <version>${spring.version}</version>
32         </dependency>
33         <!--mybatis-spring适配器 -->
34         <dependency>
35             <groupId>org.mybatis</groupId>
36             <artifactId>mybatis-spring</artifactId>
37             <version>1.3.0</version>
38         </dependency>
39         <!--Spring java数据库访问包,在本例中主要用于提供数据源 -->
40         <dependency>
41             <groupId>org.springframework</groupId>
42             <artifactId>spring-jdbc</artifactId>
43             <version>${spring.version}</version>
44         </dependency>
45         <!--mysql数据库驱动 -->
46         <dependency>
47             <groupId>mysql</groupId>
48             <artifactId>mysql-connector-java</artifactId>
49             <version>5.1.38</version>
50         </dependency>
51         <!--log4j日志包 -->
52         <dependency>
53             <groupId>org.apache.logging.log4j</groupId>
54             <artifactId>log4j-core</artifactId>
55             <version>2.6.1</version>
56         </dependency>
57         <!-- mybatis ORM框架 -->
58         <dependency>
59             <groupId>org.mybatis</groupId>
60             <artifactId>mybatis</artifactId>
61             <version>3.4.1</version>
62         </dependency>
63         <!-- JUnit单元测试工具 -->
64         <dependency>
65             <groupId>junit</groupId>
66             <artifactId>junit</artifactId>
67             <version>4.10</version>
68         </dependency>
69         <!--c3p0 连接池 -->
70         <dependency>
71             <groupId>c3p0</groupId>
72             <artifactId>c3p0</artifactId>
73             <version>0.9.1.2</version>
74         </dependency>
75         <!-- jstl -->
76         <dependency>
77             <groupId>javax.servlet</groupId>
78             <artifactId>jstl</artifactId>
79             <version>1.2</version>
80         </dependency>
81     </dependencies>
82 </project>

 

spring-mybatis.xml:

 1 <?xml version="1.0" encoding="UTF-8"?>  
 2 <beans xmlns="http://www.springframework.org/schema/beans"  
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"  
 4     xmlns:context="http://www.springframework.org/schema/context"  
 5     xmlns:mvc="http://www.springframework.org/schema/mvc"  
 6     xsi:schemaLocation="http://www.springframework.org/schema/beans    
 7                         http://www.springframework.org/schema/beans/spring-beans-3.1.xsd    
 8                         http://www.springframework.org/schema/context    
 9                         http://www.springframework.org/schema/context/spring-context-3.1.xsd    
10                         http://www.springframework.org/schema/mvc    
11                         http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">  
12     <!-- 自动扫描 -->  
13     <context:component-scan base-package="com.cn.hnust" />  
14     <!-- 引入配置文件 -->  
15     <bean id="propertyConfigurer"  
16         class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
17         <property name="location" value="classpath:jdbc.properties" />  
18     </bean>  
19   
20     <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"  
21         destroy-method="close">  
22         <property name="driverClassName" value="${driver}" />  
23         <property name="url" value="${url}" />  
24         <property name="username" value="${username}" />  
25         <property name="password" value="${password}" />  
26         <!-- 初始化连接大小 -->  
27         <property name="initialSize" value="${initialSize}"></property>  
28         <!-- 连接池最大数量 -->  
29         <property name="maxActive" value="${maxActive}"></property>  
30         <!-- 连接池最大空闲 -->  
31         <property name="maxIdle" value="${maxIdle}"></property>  
32         <!-- 连接池最小空闲 -->  
33         <property name="minIdle" value="${minIdle}"></property>  
34         <!-- 获取连接最大等待时间 -->  
35         <property name="maxWait" value="${maxWait}"></property>  
36     </bean>  
37   
38     <!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 -->  
39     <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">  
40         <property name="dataSource" ref="dataSource" />  
41         <!-- 自动扫描mapping.xml文件 -->  
42         <property name="mapperLocations" value="classpath:com/cn/hnust/mapping/*.xml"></property>  
43     </bean>  
44   
45     <!-- DAO接口所在包名,Spring会自动查找其下的类 -->  
46     <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">  
47         <property name="basePackage" value="com.cn.hnust.dao" />  
48         <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>  
49     </bean>  
50   
51     <!-- (事务管理)transaction manager, use JtaTransactionManager for global tx -->  
52     <bean id="transactionManager"  
53         class="org.springframework.jdbc.datasource.DataSourceTransactionManager">  
54         <property name="dataSource" ref="dataSource" />  
55     </bean>  
56   
57 </beans>  

 

spring配置:

 1 <context:property-placeholder location="classpath:jdbc.properties" />  
 2   
 3 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"  destroy-method="close"> 
     <!-- 数据库驱动 --> 4 <property name="driverClassName" value="${jdbc.driverClassName}" />
    <!-- 数据库链接地址 --> 5 <property name="url" value="${jdbc.url}" /> 6 <property name="username" value="${jdbc.username}" /> 7 <property name="password" value="${jdbc.password}" /> 8 9 <!-- 默认值是 0, 连接池创建连接的初始连接数目 --> 10 <property name="initialSize" value="2" /> 11 <!-- 默认是 0, 连接数中最小空闲连接数 --> 12 <property name="minIdle" value="2" /> 13 <!-- 默认值是 8, 连接池中同时可以分派的最大活跃连接数 --> 14 <property name="maxActive" value="8" /> 15 <!-- 默认是 8 ,连接池中最大空闲连接数 --> 16 <property name="maxIdle" value="5" /> 17 <!-- 默认值是无限大,当连接池中连接已经用完了,等待建立一个新连接的最大毫秒数 ( 在抛异常之前 ) --> 18 <property name="maxWait" value="60000" /> 19 <!-- 默认值是 false, 是否清理 removeAbandonedTimeout 秒没有使用的活动连接 , 清理后并没有放回连接池 --> 20 <property name="removeAbandoned" value="true" /> 21 <!-- 默认值是 300( 秒 ), 活动连接的最大空闲时间 --> 22 <property name="removeAbandonedTimeout" value="180" /> 23 <!-- 当建立一个数据库连接的时候,这些属性参数将传给 jdbc driver,参数的形式必须是 [propertypropertyName=property;]* 24 <property name="connectionProperties"> 25 <value>clientEncoding=utf-8</value> 26 </property> 27 --> 28 29 <!-- validate配置,重连配置 --> 30 <!-- 默认值是 false, 当连接池中的空闲连接是否有效 --> 31 <property name="testWhileIdle" value="true" /> 32 <!-- 默认值是 true ,当从连接池取连接时,验证这个连接是否有效 --> 33 <property name="testOnBorrow" value="true" /> 34 <!-- 默认值是 flase, 当从把该连接放回到连接池的时,验证这个连接是否有效 --> 35 <property name="testOnReturn" value="false" /> 36 <!-- 验证连接是否成功, SQL SELECT 指令至少要返回一行 --> 37 <property name="validationQuery"> 38 <value>select current date from sysibm.SYSDUMMY1</value> 39 </property> 40 <!-- 在执行检查时超时设置,通过statement 设置,statement.setQueryTimeout(validationQueryTimeout) --> 41 <property name="validationQueryTimeout" value="1" /> 42 <!-- 默认值是 -1 ,每隔一段多少毫秒跑一次回收空闲线程的线程 --> 43 <property name="timeBetweenEvictionRunsMillis" value="60000" /> 44 <!-- 默认值是 3 ,每次验证空闲连接的连接数目 --> 45 <property name="numTestsPerEvictionRun" value="8" /> 46 </bean>

 DBCP数据源:

    DBCP类包位于 /lib/jakarta-commons/commons-dbcp.jar,DBCP是一个依赖 Jakarta commons-pool对象池机制的数据库连接池,所以在类路径下还必须包括/lib/jakarta- commons/commons-pool.jar。下面是使用DBCP配置MySql数据源的配置片断:

 1 xml 代码
 2 
 3 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"  destroy-method="close">        
 6 
 7     <property name="driverClassName" value="com.mysql.jdbc.Driver" />       
 8 
 9     <property name="url" value="jdbc:mysql://localhost:3309/sampledb" />       
10 
11     <property name="username" value="root" />       
12 
13     <property name="password" value="1234" />   

BasicDataSource提供了close()方法关闭数据源,所以必须设定destroy-method=”close”属性, 以便Spring容器关闭时,数据源能够正常关闭。

除以上必须的数据源属性外,还有一些常用的属性: 

    defaultAutoCommit:设置从数据源中返回的连接是否采用自动提交机制,默认值为 true; 

    defaultReadOnly:设置数据源是否仅能执行只读操作, 默认值为 false; 

    maxActive:最大连接数据库连接数,设置为0时,表示没有限制; 

    maxIdle:最大等待连接中的数量,设置为0时,表示没有限制; 

    maxWait:最大等待秒数,单位为毫秒, 超过时间会报出错误信息; 

    validationQuery:用于验证连接是否成功的查询SQL语句,SQL语句必须至少要返回一行数据, 如你可以简单地设置为:“select count(*) from user”; 

    removeAbandoned:是否自我中断,默认是 false ; 

    removeAbandonedTimeout:几秒后数据连接会自动断开,在removeAbandoned为true,提供该值; 

    logAbandoned:是否记录中断事件, 默认为 false; 

application.properties:

 1 driver=com.mysql.jdbc.Driver
 2 url=jdbc:mysql://127.0.0.1:3306/mytest
 3 username=root
 4 password=123456
 5 
 6 idleConnectionTestPeriod=60
 7 maxIdleTime=240
 8 acquireIncrement=5
 9 initialPoolSize=10
10 maxPoolSize=30
11 minPoolSize=10
12 autoCommitOnClose=false
13 checkoutTimeout=1000
14 acquireRetryAttempts=2

 

posted @ 2019-08-29 17:36  沐之橙  阅读(169)  评论(0编辑  收藏  举报