spring整合mybatis和Servlet

Spring+MyBatis+Servlet

  • Spring和MyBatis整合
  • Spring和Servlet整合

Spring和MyBatis整合

实现原理:就是让springIOC容器帮我们管理MyBatis框架要使用的对象

  1. 导入springIOC和AOP模块、MyBatis框架、c3p0、mybatis-spring相关jar包;
  2. 开启注解扫描;
  3. 配置要连接数据库的资源文件;
  4. 获取连接池信息;
  5. 从连接池里获取数据库连接工厂对象;
  6. 通过连接生成dao层接口的实现类;
  7. 注:mybatisConfig.xml文件加上映射路径即可

jdbc.properties参考代码片.

jdbc.driver=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@localhost:1521:orcl
jdbc.username=mydb
jdbc.password=123456

springIOC.xml参考代码片.

<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd">

	<!-- spring和MyBatis框架集成 -->	
	<!-- 开启注解扫描:配置容器自动扫描相应包下面的添加注解的类 -->
	<context:component-scan base-package="com.ssm"></context:component-scan>
	<!-- 引入数据库资源文件 -->
	<context:property-placeholder location="classpath:jdbc.properties"/>
	<!-- 配置数据库数据源,c3p0连接池 -->
	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
		<property name="driverClass" value="${jdbc.driver}"></property>
		<property name="jdbcUrl" value="${jdbc.url}"></property>
		<property name="user" value="${jdbc.username}"></property>
		<property name="password" value="${jdbc.password}"></property>
		<!-- 还可以配置初始化连接大小,连接池最大数量,最大最小空闲数,最大连接等待时长 -->
		<!-- 连接池中保留的最小连接数:Default: 3 -->
		<!--<property name="minPoolSize" value="5"></property>-->
		<!-- 连接池中保留的最大连接数:Default: 15 -->
		<!--<property name="maxPoolSize" value="100"></property>-->
		<!-- 初始化时获取的连接数,应在最大最小之间:Default: 3 -->
		<!--<property name="initialPoolSize" value="10"></property>-->
		<!-- 最长等待空闲时间,60秒内未使用则连接丢失,若为0则永不丢失:Default: 0 -->
		<!--<property name="maxIdleTime" value="60"></property>-->
		<!-- 当连接池中的连接耗尽时,c3p0向数据库一次同时获取的连接数:Default: 3 -->
		<!--<property name="acquireIncrement" value="5"></property>-->
	</bean>
	<!-- 配置产生数据库连接对象的工厂,使用MyBatis类库里封装的用于spring容器里的对象 -->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<!-- 把数据源交给该对象 -->
		<property name="dataSource" ref="dataSource"></property>
		<!-- 告诉该对象MyBatis主配置文件位置 -->
		<property name="configLocation" value="classpath:mybatisConfig.xml"></property>
	</bean>
	<!-- 让spring帮我们自动生成DAO层接口的实现类 -->
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<!-- 设置获取实现类需要用到的数据库连接对象,注意这里是Value -->
		<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
		<!-- 指定DAO层接口所在位置,spring自动查找 -->
		<property name="basePackage" value="com.ssm.dao"></property>
	</bean>
</beans>

Spring和Servlet整合

实现原理:让Tomcat服务器启动完项目后创建springIOC容器

  1. 导入springMVC模块的jar包;
  2. 使用到springWEB里的接口WebApplicationContext,作为服务器和框架间的桥梁;
  3. 实现:在该项目启动完成时服务器会通过(web.xml配置监听器)监听器去帮我们创建IOC容器
    在第一次请求产生时会执行init方法,生成Servlet对象(创建一个BaseServlet)
    然后我们从application作用域里面去获取到创建好的容器(使用桥梁实现类获取)
    容器创建好了会自动扫描项目所有注解生成相应的bean实例供业务适用(在父类提供获取bean实例方法给子类调用);

web.xml参考代码片.

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:springIOC.xml</param-value>
  </context-param>
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>

这种整合,其中Servlet可以替换为springMVC模块无缝集成,更简洁。

你可能感兴趣的:(学习,Spring)