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>