Spring MVC + MyBatis整合配置

本文介绍如何搭建SpringMVC+Mybatis的基础环境,包括配置applicationContext.xml、spring-config.xml及web.xml等文件,实现了数据源配置、SqlSessionFactory设置、mapper扫描等功能。

最近学习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测试可运行


根据原作 https://pan.quark.cn/s/0ed355622f0f 的源码改编 野火IM解决方案 野火IM是专业级即时通讯和实时音视频整体解决方案,由北京野火无限网络科技有限公司维护和支持。 主要特性有:私有部署安全可靠,性能强大,功能齐全,全平台支持,开源率高,部署运维简单,二次开发友好,方便与第三方系统对接或者嵌入现有系统中。 详细情况请参考在线文档。 主要包括一下项目: 野火IM Vue Electron Demo,演示如何将野火IM的能力集成到Vue Electron项目。 前置说明 本项目所使用的是需要付费的,价格请参考费用详情 支持试用,具体请看试用说明 本项目默认只能连接到官方服务,购买或申请试用之后,替换,即可连到自行部署的服务 分支说明 :基于开发,是未来的开发重心 :基于开发,进入维护模式,不再开发新功能,鉴于已经终止支持且不再维护,建议客户升级到版本 环境依赖 mac系统 最新版本的Xcode nodejs v18.19.0 npm v10.2.3 python 2.7.x git npm install -g node-gyp@8.3.0 windows系统 nodejs v18.19.0 python 2.7.x git npm 6.14.15 npm install --global --vs2019 --production windows-build-tools 本步安装windows开发环境的安装内容较多,如果网络情况不好可能需要等较长时间,选择早上网络较好时安装是个好的选择 或参考手动安装 windows-build-tools进行安装 npm install -g node-gyp@8.3.0 linux系统 nodej...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值