ssm--1.Spring4+mybatis3+Spring4 mvc整合

来源:互联网 发布:linux 终端快捷键 编辑:程序博客网 时间:2024/06/06 05:12

1      springmvc和mybatis整合工程搭建

 

1.1    整合思路

 

在mybatis和spring整合的基础上 添加springmvc。(自已参看以前Spring整合mybatis)

 

spring要管理springmvc编写的Handler(controller)、mybatis的SqlSessionFactory、mapper

 

第一步:整合dao,spring和mybatis整合

第二步:整合service,spring管理service接口,service中可以调用spring容器中dao(mapper)

第三步:整合controller,spring管理controller接口,在controller调用service

 

 

 

1.2    jar包    40个

mybatis:3.2.7   10个

spring:4.2.4  20个


mybatis和spring整合包  1个

 

数据库驱动包,jdbc连接池,c3p0,虽说不一定都用的道,但没坏处   4个

log4j日志..   1个

Jstl    2个

要在 spring 应用中使用 AspectJ注解, 必须在 classpath 下包含 AspectJ 类库: aopalliance.jar、aspectj.weaver.jar和 spring-aspects.jar    一般2个就行

 

1.3    工程结构

po及mapper已由逆向工程生成

1.3.1    配置文件

applicationContext-dao.xml---配置SqlSessionFactory(数据源 , mybati配置文件)、mapper扫描器

applicationContext-service.xml---配置service接口

applicationContext-transaction.xml--事务管理

sprintmvc.xml---springmvc的配置,配置处理器映射器、适配器、视图解析器

SqlMapConfig.xml---mybatis的配置文件,配置别名、settings、mapper

web.xml的配置文件:一切程序的起点:扫描spring,扫描springmvc的dispatcherServlet

 

1.3.2    applicationContext-dao.xml

 

配置mybatis的数据源、sqlSessionFactory、mapper扫描器

 <?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: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/contexthttp://www.springframework.org/schema/context/spring-context-4.2.xsd">    <!-- 配置数据源 -->   <context:property-placeholder location="classpath:db.properties" />   <!-- 数据库连接池 -->   <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"      destroy-method="close">      <property name="driverClassName" value="${jdbc.driver}" />      <property name="url" value="${jdbc.url}"/>      <property name="username" value="${jdbc.username}"/>      <property name="password" value="${jdbc.password}"/>     </bean>     <!-- sqlSessionFactory -->   <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">      <!-- 数据源 -->      <property name="dataSource" ref="dataSource"></property>           <!-- mybatis配置文件 -->      <property name="configLocation" value="classpath:mybatis/SqlMapConfig.xml"></property>   </bean>     <!-- 配置mapper   MapperFactoryBean:用于生成mapper代理对象   MapperScannerConfigurer:mapper的扫描器,将包下边的mapper接口自动创建代理对象,   自动创建到spring容器中,bean的id是mapper的类名(首字母小写)    -->   <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">      <!-- 配置扫描包的路径      如果要扫描多个包,中间使用半角逗号分隔       -->      <property name="basePackage" value="ssm.mapper"/>      <!-- 使用sqlSessionFactoryBeanName -->      <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>   </bean></beans>

1.3.3    applicationContext-transation.xml

 在此配置文件配置事务,声明式事务控制。

 

事务管理器:

 

<!-- 定义事务管理器 -->    <bean id="transactionManager"      class="org.springframework.jdbc.datasource.DataSourceTransactionManager">      <property name="dataSource" ref="dataSource" />   </bean>    <!-- 通知 -->    <tx:advice id="txAdvice"transaction-manager="transactionManager">      <tx:attributes>         <tx:method name="save*" propagation="REQUIRED"/>         <tx:method name="insert*" propagation="REQUIRED"/>         <tx:method name="update*" propagation="REQUIRED"/>         <tx:method name="delete*" propagation="REQUIRED"/>         <tx:method name="find*" propagation="SUPPORTS"read-only="true"/>         <tx:method name="select*" propagation="SUPPORTS"read-only="true"/>         <tx:method name="get*" propagation="SUPPORTS"read-only="true"/>      </tx:attributes>    </tx:advice>        <!-- aop-->    <aop:config>      <aop:advisor advice-ref="txAdvice"                 pointcut="execution(*ssm.service.impl.*.*(..))"/>    </aop:config>

 

1.4    前端控制器配置

<!-- The front controller ofthis Spring Web application, responsible for handling all application requests-->   <servlet>      <servlet-name>springDispatcherServlet</servlet-name>      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>      <init-param>         <param-name>contextConfigLocation</param-name>         <param-value>classpath:spring/springmvc.xml</param-value>      </init-param>      <load-on-startup>1</load-on-startup>   </servlet>    <!-- Map all requests to the DispatcherServlet forhandling -->   <servlet-mapping>      <servlet-name>springDispatcherServlet</servlet-name>      <url-pattern>*.action</url-pattern>   </servlet-mapping> 

1.5    配置springmvc.xml

<!-- 使用spring组件扫描 -->   <context:component-scan base-package="ssm.controller" />    <!-- 可以替代处理器,适配器 -->   <mvc:annotation-driven></mvc:annotation-driven>     <!-- 注解处理器映射器 -->   <bean   class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"></bean>    <!-- 注解适配器 -->   <bean   class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>    <!-- 配置视图解析器要求将jstl的包加到classpath -->   <!-- ViewResolver -->   <bean      class="org.springframework.web.servlet.view.InternalResourceViewResolver">      <property name="prefix" value="/WEB-INF/jsp/"/>      <property name="suffix" value=".jsp"/>    </bean>

1.6    商品列表开发

1.6.1    需求

查询商品列表,逆向工程

 

1.6.2    mapper

功能描述:根据条件查询商品信息,返回商品列表

一般情况下针对查询mapper需要自定义mapper。

首先针对单表进行逆向工程,生成代码。


1.6.2.1             mapper.xml

ItemsMapperCustom.xml
<mapper namespace="ssm.mapper.ItemsMapperCustom"><!-- 商品查询的sql片段建议是以单表为单位定义查询条件建议将常用的查询条件都写出来 --><sql id="query_items_where"><if test="itemsCustom!=null"><if test="itemsCustom.name!=null and itemsCustom.name!=''">and  name like '%${itemsCustom.name}%'</if><if test="itemsCustom.id!=null">and  id = #{itemsCustom.id}</if></if></sql><!-- 商品查询 parameterType:输入 查询条件--><select id="findItemsList" parameterType="ssm.po.ItemsQueryVo" resultType="ssm.po.ItemsCustom">SELECT * FROM items <where><include refid="query_items_where"/></where></select>


1.6.2.2             包装类,实现类:

 

 

1.6.2.3             mapper.java

/** * Description:商品自定义mapper */public interface ItemsMapperCustom {// 商品查询列表public List<ItemsCustom> findItemsList(ItemsQueryVo itemsQueryVo)throws Exception;}

1.6.3    service.impl

public class ItemsServiceImpl implements ItemsService {//注入mapper@Autowiredprivate ItemsMapperCustom itemsMapperCustom;//商品查询列表@Overridepublic List<ItemsCustom> findItemsList(ItemsQueryVo itemsQueryVo)throws Exception {return itemsMapperCustom.findItemsList(itemsQueryVo);}}

 

1.6.4    在applicationContext-service.xml中配置service

  

1.6.5    controller

/** * Description:商品管理 */@Controllerpublic class ItemsController {//注入service@Autowiredprivate ItemsService itemsService;@RequestMapping("/queryItems")public ModelAndView queryItems(HttpServletRequest request) throws Exception {System.out.println(request.getParameter("id"));//调用service查询商品列表List<ItemsCustom> itemsList = itemsService.findItemsList(null);ModelAndView modelAndView = new ModelAndView();modelAndView.addObject("itemsList", itemsList);// 指定逻辑视图名modelAndView.setViewName("itemsList");return modelAndView;} 

1.6.6    jsp

 

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %><%@ taglib uri="http://java.sun.com/jsp/jstl/fmt"  prefix="fmt"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>查询商品列表</title></head><body> <form action="${pageContext.request.contextPath }/items/queryItem.action" method="post">查询条件:<table width="100%" border=1><tr><td><input type="submit" value="查询"/></td></tr></table>商品列表:<table width="100%" border=1><tr><td>商品名称</td><td>商品价格</td><td>生产日期</td><td>商品描述</td><td>操作</td></tr><c:forEach items="${itemsList }" var="item"><tr><td>${item.name }</td><td>${item.price }</td><td><fmt:formatDate value="${item.createtime}" pattern="yyyy-MM-dd HH:mm:ss"/></td><td>${item.detail }</td><td><a href="${pageContext.request.contextPath }/items/editItems.action?id=${item.id}">修改</a></td></tr></c:forEach></table></form></body></html> 

1.6.7    在web.xml配置spring监听器

 习惯最开始都写了


 

在tomcat部署上去,在浏览器输入http://127.0.0.1:8080/ssm/queryItems.action


源代码文件:http://download.csdn.net/detail/qq_26553781/9766211

 

 

0 0
原创粉丝点击