Spring MVC + MyBatis整合配置

最近学习Spring MVC + Mybatis整合,但是搭建基础环境的时候一直出现问题,经过不懈努力终于完成了

首先加入所需JAR包


然后我们看一下applicationContext.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"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
            http://www.springframework.org/schema/context 
            http://www.springframework.org/schema/context/spring-context-3.2.xsd
            http://www.springframework.org/schema/aop 
            http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
            http://www.springframework.org/schema/tx 
            http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
            http://www.springframework.org/schema/mvc 
            http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd">
         
      <!-- 扫描除了controllor以外的需要交由spring进行管理的Bean,多个包之间由,进行分隔 -->
     <context:component-scan base-package="com.lzy.webapp.service"/>
    <!-- 加载db.properties文件中的内容 中的key要有一定的规则 -->
    <context:property-placeholder location="classpath:db.properties"/>
    <!-- 配置数据源 根据加载的文件的内容给一下变量赋值-->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
        <property name="driverClass">  
            <value>${datasource.driverClassName}</value>  
        </property>  
        <property name="jdbcUrl">  
            <value>${datasource.url}</value>  
        </property>  
        <property name="user">  
            <value>${datasource.username}</value>  
        </property>  
        <property name="password">  
            <value>${datasource.password}</value>  
        </property>
         <property name="acquireIncrement">  
            <value>${c3p0.acquireIncrement}</value>  
        </property>  
        <!--初始化时获取三个连接,取值应在minPoolSize与maxPoolSize之间。Default: 3 -->   
        <property name="initialPoolSize">  
            <value>${c3p0.initialPoolSize}</value>  
        </property>  
        <property name="minPoolSize">  
            <value>${c3p0.minPoolSize}</value>  
        </property>  
        <!-- 最哒连接池容量 -->
        <property name="maxPoolSize">  
            <value>${c3p0.maxPoolSize}</value>  
        </property>  
        <!--最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 -->   
        <property name="maxIdleTime">  
            <value>${c3p0.maxIdleTime}</value>  
        </property>  
        <!--每60秒检查所有连接池中的空闲连接。Default: 0 -->   
        <property name="idleConnectionTestPeriod">  
            <value>${c3p0.idleConnectionTestPeriod}</value>  
        </property>  
        <!-- JDBC的标准参数,用以控制数据源内加载的PreparedStatements数量。但由于预缓存的statements   
                            属于单个connection而不是整个连接池。所以设置这个参数需要考虑到多方面的因素。   
                            如果maxStatements与maxStatementsPerConnection均为0,则缓存被关闭。Default: 0-->   
        <property name="maxStatements">  
            <value>${c3p0.maxStatements}</value>  
        </property>  
        <!-- c3p0是异步操作的,缓慢的JDBC操作通过帮助进程完成。扩展这些操作可以有效的提升性能 通过  
                                  多线程实现多个操作同时被执行。Default: 3-->   
        <property name="numHelperThreads">  
            <value>${c3p0.numHelperThreads}</value>  
        </property>  
    </bean>
    <!-- 配置SqlSessionFactory -->    
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!-- 加载数据库连接池 -->
        <property name="dataSource" ref="dataSource"></property>
    </bean>
    <!-- 配置mapper扫描器  不需要加载配置的xxxMapper.xml文件,基于接口实现,basePackage就是存放接口的包-->  
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!-- 扫描包路径,如果需要扫描多个,中间使用半角的逗号隔开 -->
        <property name="basePackage" value="com.lzy.webapp.mapper"></property>
    </bean> 
    <!--JDBC事务管理器-->
    <bean id = "transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager" >
     <property name="dataSource" ref="dataSource" />
    </bean>  
    <!--启用支持annotation注解方式事务管理-->
    <tx:annotation-driven transaction-manager="transactionManager"/>
 </beans>

其中所需的数据源的配置文件 db.properties文件如下配置:

datasource.driverClassName=com.mysql.jdbc.Driver
datasource.url=jdbc:mysql://localhost:3306/webapp
datasource.username=root
datasource.password=599679

c3p0.acquireIncrement=3  
c3p0.initialPoolSize=3  
c3p0.idleConnectionTestPeriod=60  
c3p0.minPoolSize=5  
c3p0.maxPoolSize=100  
c3p0.maxStatements=100  
c3p0.numHelperThreads=10  
c3p0.maxIdleTime=60  

接下来是spring-config.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" xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:mvc="http://www.springframework.org/schema/mvc"
	xsi:schemaLocation="http://www.springframework.org/schema/beans  
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
    http://www.springframework.org/schema/tx  
    http://www.springframework.org/schema/tx/spring-tx-3.0.xsd 
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-3.0.xsd 
    http://www.springframework.org/schema/mvc 
    http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
    
    <!-- 自动扫描该包,springMVC将会将该包下的使用了@Controllor注解的类注册为spring controllor -->
    <context:component-scan base-package="com.lzy.webapp.controllor"/>
    <!-- 设置默认配置方案 -->
    <mvc:annotation-driven/>
    
    <!-- 视图解释类 -->
	<bean
		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/webapp/" />
		<property name="suffix" value=".jsp" /><!--可为空,方便实现自已的依据扩展名来选择视图解释类的逻辑 -->
	</bean>
    
</beans>

最后在web.xml中将xml加载使用:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>DemoWebapp</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
  </welcome-file-list>
  
  <!-- 配置spring核心监听器,默认会以/WEB-INF/applicationContext.xml作为配置文件 ,产生web容器的上下文-->
  <listener>
  	<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  
  <context-param> 
   		<param-name>contextConfigLocation</param-name>
   		<param-value>/WEB-INF/applicationContext*.xml</param-value>
  </context-param>
  <!-- 加载DispatcherServlet,加载springmvc-config文件配置上下文 ,产生spring容器上下文-->
  <servlet>
  		<servlet-name>springmvc</servlet-name>
  		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  		<init-param>
  			<param-name>contextConfigLocation</param-name>
  			<param-value>/WEB-INF/springmvc-config.xml</param-value>
  		</init-param>
  		<load-on-startup>1</load-on-startup>
  </servlet>
  
  <servlet-mapping>
  		<servlet-name>springmvc</servlet-name>
  		<url-pattern>/</url-pattern>
  </servlet-mapping>
  <!-- 编码过滤器 -->
  <filter>
		<filter-name>SpringCharacterEncoding</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
		<init-param>
			<param-name>forceEncoding</param-name>
			<param-value>true</param-value
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>SpringCharacterEncoding</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
</web-app>
基础配置完成,在写前端后台测试代码之后,springmvc+mybatis+c3p0测试可运行


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值