SpringMVC和MyBatis整合
1、整合DAO层,即Mapper接口配置在Spring容器中
1、创建MyBatis/sqlMapConfig.xml 配置文件
1、配置别名
<!-- 对象别名 -->
<typeAliases>
<typeAlias type="com.lanhuigu.mybatis.entity.User" alias="User"/>
</typeAliases>
2、配置数据源(不需要)
3、配置Mapper全局环境文件(不需要)
但是由于使用SpringMVC整合,所以只配置第一步,其他放到Spring容器中配置
2、配置DAO,新建spring/application-dao.xml 配置文件
1、配置数据源(包含加载jdbc.properties文件)
<!-- 配置数据源 -->
<context:property-placeholder location="classpath:db.properties"/>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${driver}" />
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
<!-- 初始化连接大小 -->
<property name="initialSize" value="${initialSize}"></property>
<!-- 连接池最大数量 -->
<property name="maxActive" value="${maxActive}"></property>
<!-- 连接池最大空闲 -->
<property name="maxIdle" value="${maxIdle}"></property>
<!-- 连接池最小空闲 -->
<property name="minIdle" value="${minIdle}"></property>
<!-- 获取连接最大等待时间 -->
<property name="maxWait" value="${maxWait}"></property>
</bean>
2、配置SqlSessionFactory(配置Bean、加载mybatsi全局配置文件属性)
<!-- 配置SqlSessionFactory -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<!-- 加载Mybatis全局配置文件 -->
<property name="mapperLocations" value="classpath:mybatis/sqlMapConfig.xml"></property>
</bean>
3、配置Mapper扫描器(配置扫描包、SqlSessionFactoryBeanName属性)
<!-- 配置mapper接口扫描器 -->
<bean class="tk.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
<property name="basePackage" value="cn.com.**.dao" />
</bean>
2、整合Service层
创建spring/application-service.xml
1、配置serviceImpl实现类的Bean
<bean id="itemServiceImpl" class="cn.itcast.ssm.service.impl.ItemServiceImpl"></bean>
2、配置事务管理(配置Bean的Class、数据源属性)
<!-- (事务管理)transaction manager, use JtaTransactionManager for global tx -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
3、配置通知
<!-- 通知,限定业务层Service的方法名必须以下面的开头,并通知给事务管理器 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="save*" propagation="REQUIRED"/>
<tx:method name="delete*" propagation="REQUIRED"/>
<tx:method name="insert*" propagation="REQUIRED"/>
<tx:method name="update*" propagation="REQUIRED"/>
<tx:method name="find*" propagation="SUPPORTS" read-only="true"/>
<tx:method name="get*" propagation="SUPPORTS" read-only="true"/>
</tx:attributes>
</tx:advice>
4、配置aop
<!-- aop配置,因为AOP要调用通知
execution(* cn.itcast.ssm.service.impl.*.*(..)),表示
按照cn.itcast.ssm.service.impl包中所有的类名所有的方法名不管什么参数,(..)表示不管什么参数
-->
<aop:config>
<aop:advisor advice-ref="txAdvice" pointcut="execution(* cn.itcast.ssm.service.impl.*.*(..))"/>
</aop:config>
3、配置SpringMVC
1、配置组件扫描包
<context:component-scan base-package="cn.itcast.ssm.controller" />
2、配置mvc注解驱动器(映射器和扫描器)
<mvc:annotation-driven />
3、配置视图解析器
<!-- 配置视图解析器(ViewResover) -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/jsp1/"/>
<property name="suffix" value=".jsp"/>
</bean>
4、配置前端控制器,在web.xml文件中修改
<!-- 前端控制器 -->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 初始化参数配置
contextConfigLocation配置springmvc加载的配置文件(配置HandlerMapping、HandlerAdapter)
如果不配置contextConfigLocation,默认加载的是/WEB-INF/servlet名称-servlet.xml(springmvc-servlet.xml)
-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<!--
第一种:*.action,访问.action结尾的DispatcherServlet解析
第二种:/,访问所有的地址,都由DispatcherServlet解析,对于静态文件需要配置不让其解析
第三种:/*,struts习惯使用,springmvc不管用,使用这种配置,最终要转发到一个jsp页面时,
仍然由DispatcherServlet解析jsp地址,不能根据jsp地址转到Handler,会报错
-->
<url-pattern>*.do</url-pattern>
</servlet-mapping>
5、加载Spring容器
1、加载Mapper、service、controller配置到容器中
2、加载监听器
<!-- 加载Spring容器 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>WEB-INF/Classes/spring/application-*.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>