zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    解决ecshop进入后台服务器出现500的问题
    Java8新特性(拉姆达表达式lambda)
    使用Optional优雅处理null
    Arrays.asList 存在的坑
    Java提供的几种线程池
    冒泡排序及优化详解
    如何让MySQL语句执行加速?
    关于https的五大误区
    127.0.0.1和0.0.0.0地址的区别
    宽带网络技术-大题重点
  • 原文地址:https://www.cnblogs.com/mzcx/p/11431063.html
Copyright © 2011-2022 走看看