SpringMVC+Spring+Mybatis整合

创建web工程

用eclipse或idea创建一个web工程,在这里演示使用idea,项目命名为ssm

建立工程目录框架

根据习惯,简历包目录,分别为

  1. config

    在其中创建两个子包mybatis和spring,分别用来放置spring、mybatis配置文件

  2. mapper

    用来放置mybatis的mapper接口和mapper.xml

  3. service

    service层的javabean

  4. controller

    controller的javabean

  5. pojo

    简单的POJO类

在WEB-INF下建立两个目录

  1. lib

    jar包目录

  2. views

    jsp视图目录

导入jar包

一共需要如下jar包

  1. spring所有包
  2. mybatis
  3. spring-mybatis整合包
  4. aspectj
  5. jstl
  6. log4j
  7. c3p0
  8. mysql

百度云下载 链接:http://pan.baidu.com/s/1dDB8cxV 密码:3cqp

添加mybatis配置文件

在config.mybatis下创建mybatis.xml配置文件,SSM整合和mybatis在不需要二级缓存等配置时,mybatis配置文件只需要一个框架,不需要书写具体内容,框架如下

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>

</configuration>

添加spring和springmvc配置文件

  • springmvc

在config.spring下创建springmvc.xml文件,用来配置springmvc

<?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: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/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

       <!--自动扫描controller 加入IOC容器-->
       <context:component-scan base-package="com.elin4it.ssm.controller"/>

       <!--配置映射器和适配器-->
       <mvc:annotation-driven></mvc:annotation-driven>

       <!--配置视图渲染类-->
       <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
              <!--配置物理解析路径-->
              <property name="prefix" value="/WEB-INF/views/"/>
              <property name="suffix" value=".jsp"/>
       </bean>

</beans>
  • applicationContext-dao.xml

在config.spring下创建applicationContext-dao.xml文件,用来配置DAO层的内容,在这里连接数据库的数据源使用C3P0,所以在这之前先在config中添加db.properties来指定数据库连接信息

jdbc.driver = com.mysql.jdbc.Driver
jdbc.url = jdbc:mysql://127.0.0.1:3306/mybatis?characterEncoding=UTF-8
jdbc.username = root
jdbc.password = root

applicationContext-dao.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: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.xsd">

       <!--添加数据库配置文件-->
       <context:property-placeholder location="classpath:com/elin4it/ssm/config/db.properties"/>

       <!--设置数据源c3p0-->
       <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
              <property name="driverClass" value="${jdbc.driver}"/>
              <property name="jdbcUrl" value="${jdbc.url}"/>
              <property name="user" value="${jdbc.username}"/>
              <property name="password" value="${jdbc.password}"/>
              <property name="maxPoolSize" value="50"/>
              <property name="minPoolSize" value="5"/>
              <property name="maxIdleTime" value="60"/>
       </bean>

       <!--配置sqlsessionFactory-->
       <bean id="sqlSession" class="org.mybatis.spring.SqlSessionFactoryBean">
              <!--配置mybatis配置文件-->
              <property name="configLocation" value="classpath:com/elin4it/ssm/config/mybaits/SqlMapConfig.xml"/>
              <!--配置数据源-->
              <property name="dataSource" ref="dataSource"/>
       </bean>

       <!--配置自动扫描mapper,将mapper接口加入到IOC容器-->
       <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
              <property name="basePackage" value="com/elin4it/ssm/mapper"/>
              <property name="sqlSessionFactoryBeanName" value="sqlSession"/>
       </bean>
</beans>
  • applicationContext-service.xml

在config.spring中添加applicationContext-service.xml,用来把service层的javabean注入到IOC容器中

<?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/context http://www.springframework.org/schema/context/spring-context.xsd">

       <!--将service加入到IOC容器-->
       <context:component-scan base-package="com.elin4it.ssm.service"/>
</beans>
  • applicationContext-transtion.xml

在config.spring中添加applicationContext-transtion.xml,用来配置AOP事务

<?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:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">

       <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="find*" propagation="REQUIRED"/>
                     <tx:method name="add*" propagation="REQUIRED"/>
                     <tx:method name="delete*" propagation="REQUIRED"/>
                     <tx:method name="update*" propagation="REQUIRED"/>
              </tx:attributes>
       </tx:advice>

       <aop:config>
              <aop:advisor advice-ref="txAdvice" pointcut="execution(* com.elin4it.ssm.service.*.*(..))"/>
       </aop:config>
</beans>

添加log4j配置文件

为了方便mybatis的调试,使用log4j作为日志输出,在src根目录中添加log4j.properties

log4j.rootLogger=DEBUG,Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
log4j.logger.org.apache=INFO

修改web.xml文件

web.xml需要实现三个功能

  • 配置spring文件
<!--设置spring 配置文件的位置-->
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:cn/elinzhou/OrderSpringMVC/config/spring/applicationContext-*.xml</param-value>
</context-param>
<!--配置spring listener-->
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
  • 配置springmvc中的前端控制器
<!--配置springmvc-->
<servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <!--springmvc配置文件位置-->
        <param-value>classpath:cn/elinzhou/OrderSpringMVC/config/spring/springmvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>
  • 解决post乱码问题
<!--解决POST乱码问题-->
<filter>
    <filter-name>CharacterEncodingFilter</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>
</filter>
<filter-mapping>
    <filter-name>CharacterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

创建pojo类

这里使用一张用户表做示例,表结构如下

DROP TABLE IF EXISTS `user`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `user` (
  `id` int(11) NOT NULL auto_increment,
  `username` varchar(32) NOT NULL COMMENT ‘用户名称‘,
  `sex` char(1) default NULL COMMENT ‘性别‘,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=31 DEFAULT CHARSET=utf8;

根据表结构建立POJO类

package cn.elinzhou.OrderSpringMVC.pojo;

import java.util.Date;

public class User {
    private Integer id;

    private String username;

    private String sex;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username == null ? null : username.trim();
    }
    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex == null ? null : sex.trim();
    }
}

创建mapper接口和mapper.xml

mapper.java

package com.elin4it.ssm.mapper;

import com.elin4it.ssm.pojo.User;
import java.util.List;

public interface UserMapper {
    //查询用户列表
    List<User> findUser() throws Exception;
}

mapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.elin4it.ssm.mapper.UserMapper" >
  <select id="findUser" resultMap="com.elin4it.ssm.pojo.User">
    select
    id, username, birthday, sex, address
    from user
  </select>

</mapper>

创建service接口和实现

创建一个service接口,添加一个方法,用来查询所用用户

UserService.java

package com.elin4it.ssm.service;

import com.elin4it.ssm.pojo.User;

import java.util.List;

/**
 * Created by elin on 15-7-1.
 */
public interface UserService {
    List<User> findUser()throws Exception;
}

添加UserService的实现类UserServiceImpl.java

package com.elin4it.ssm.service;

import com.elin4it.ssm.mapper.UserMapper;
import com.elin4it.ssm.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * Description: UserServiceImpl
 * Author: Elin Zhou
 * Create: 2015-07-01 20:59
 */
@Service
public class UserServiceImpl implements UserService {

    //自动注入mapper接口
    @Autowired
    private UserMapper userMapper;

    @Override
    public List<User> findUser() throws Exception {
        //调用mapper接口中的方法,获取用户列表
        List<User> users = userMapper.findUser();
        return users;
    }
}

创建controller

创建后端控制器,前端控制器根据用户请求映射到后端控制器中的方法,并且返回视图和数据来渲染视图

package com.elin4it.ssm.controller;

import com.elin4it.ssm.pojo.User;
import com.elin4it.ssm.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import java.util.List;
import java.util.Map;

/**
 * Description: UserController
 * Author: Elin Zhou
 * Create: 2015-07-01 19:30
 */
@Controller
@RequestMapping("/user")
public class UserController {
    //自动注入service
    @Autowired
    private UserService userService;

    @RequestMapping("/findUser")
    public String findUser(Map<String,Object> map) throws Exception{
    //调用service中的查询用户列表方法来获取用户列表
        List<User> users = userService.findUser();
        //把用户列表放到形参传入的map中,相当于执行request.addAttribute()方法
        map.put("users",users);

        return "user/userList";
    }
}

创建对应的jsp页面

在WEB-INF的views文件夹中添加user文件加,用来存放用户相关的视图,在添加一个userList.jsp文件

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%--
  Created by IntelliJ IDEA.
  User: elin
  Date: 15-7-1
  Time: 下午8:53
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title></title>
</head>
<body>
  <h1>userList</h1>
  <table>
    <tr><td>id</td><td>username</td><td>sex</td></tr>
    <c:forEach items="${users}" var="i">
      <tr>
        <td>${i.id}</td>
        <td>${i.username}</td>
        <td>${i.sex}</td>
      </tr>
    </c:forEach>
  </table>
</body>
</html>

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-13 01:41:29

SpringMVC+Spring+Mybatis整合的相关文章

SpringMVC+Spring+Mybatis整合,使用druid连接池,声明式事务,maven配置

一直对springmvc和mybatis挺怀念的,最近想自己再搭建下框架,然后写点什么. 暂时没有整合缓存,druid也没有做ip地址的过滤.Spring的AOP简单配置了下,也还没具体弄,不知道能不能用,log也不知道能不能用,`(*∩_∩*)′哈哈,有点不负责任...... 直接上代码: 使用的eclipse和eclipse自带的maven,参考了网上的资料,有些代码是拷贝的,不过都自己测试过了.嗯,可以跑起来... 先上项目结构: 新建maven项目,选择web,然后配置pom: <pro

SSM(springmvc+spring+mybatis)整合过程

问题?SSM(springmvc+spring+mybatis)整合过程 一.SSM框架比较S2SH框架的优缺点比较 站在个人使用这两个框架的观点儿上来说的话,我觉得这个不能定死的说,常用的S2SH,SpringMVC等,还可以考虑jFinal. 首先说S2SH,这个是用的比较多的,特别是在中小型项目中,针对大型项目就不行了,是Struts和hibernate过于庞大,过于重量级,项目大了之后配置文件多的也是麻烦事,配置文件多了之后一方面不好操作,另外比较蛋疼的是没法断点调试,特别是对底层数据库

ztree使用系列三(ztree与springmvc+spring+mybatis整合实现增删改查)

在springmvc+spring+mybatis里整合ztree实现增删改查,上一篇已经写了demo,下面就只贴出各层实现功能的代码: Jsp页面实现功能的js代码如下: <script> //用于捕获分类编辑按钮的 click 事件,并且根据返回值确定是否允许进入名称编辑状态 function beforeEditName(treeId, treeNode) { var zTree = $.fn.zTree.getZTreeObj("treeDemo"); zTree.

springmvc+spring+mybatis 整合

1.其实我也是菜鸟一枚,以前ssm不会,所以花了一段时间,学习了mybatis spring又进行了整合,后来又学习springmvc算是都看了看,今天就把整个搭建好的框架整理一下,和大家分享,如果错误希望指正…… 2.整个项目的目录结构: 3.有了整体结构之后我们一步一步整合来实现,整合步骤: (1).配置前端控制器,web.xml配置 (2).创建处理映射器 springmvc-server.xml 配置 (3).创建控制层 (4).业务逻辑层 (5).dao层 (6).sqlmapper

JAVA springmvc+spring+mybatis整合

一.springmvc---controller  spring----service  mybatiss---dao pring(包括springmvc).mybatis.mybatis-spring整合包.数据库驱动.第三方连接池. 因为springmvc和spring属于同一个公司不需要整合包,而mybaits和spring需要整合包. 二.jar包列表 pom文件依赖: 1 <dependencies> 2 <dependency> 3 <groupId>org

SpringMVC+Spring+MyBatis 整合与图片上传简单示例

一.思路: (一) Dao层: 1. SqlMapConfig.xml,空文件即可.需要文件头.2. applicationContext_dao.xml. a) 数据库连接池b) SqlSessionFactory对象,需要spring和mybatis整合包下的.c) 配置mapper文件扫描器. (二)Service层: 1.applicationContext_service.xml包扫描器,扫描@service注解的类.2.applicationContext_trans.xml配置事务

SpringMVC+Spring+MyBatis整合完整版Web实例(附数据)

最近段时间正在学习Spring MVC和MyBatis的一些知识.自己也在网络上面找了一些例子来练习.但是都不是很完整.所以,今天,自己也抽空写了个完成的关于Spring MVC + Spring + MyBatis(简称 SSM)的一个CRUD的完整Web 演示例子.如果你也是刚好学习这几个框架的新手,或许我做的这个例子对你刚好有所帮助哦! 演示工程的目录结构 添加数据页面 修改数据的页面 查询出的数据列表 下面来说下这个演示的小例子.首先,我是使用MyEclipse工具做的这个例子,整合了S

SpringMVC + Spring + MyBatis 整合 + Spring shrio + easyUI + 权限管理框架,带shrio session和shrio cache集群实现方案

工作之余先来写了一个不算规范的简单架子 基于spring mvc + spring + mybatis + Spring shrio 基于redis的集群方案 系统权限部分,分成多个机构,其中每个机构也有自己的子机构,子机构继承的部分权限,其中每个机构拥有自己的角色和用户,角色的权限是机构中的权限,用户选择角色只能从对应机构中的角色进行选择,机构中的用户创建子机构对子机构进行授权,创建角色对角色进行授权,创建用户对用户设置角色,系统有一个超级管理员,对机构角色和用户拥有删除功能,其他机构中的管理

springmvc+spring+mybatis整合实例【转】

开发环境: System:Windows server 2003 WebBrowser:IE6+.Firefox3+ JavaEE Server:tomcat5. IDE:eclipse.MyEclipse 6.5 Database:MySQL 开发依赖库: JavaEE5.Spring 3.0.5.Mybatis 3.0.2.myBatis-spring-1.0.0-rc2 1. 首先新建一个WebProject 命名为ssi,新建项目时,使用JavaEE5的lib库.然后手动添加需要的jar

springmvc+spring+mybatis整合实例

开发环境: System:Windows server 2003 WebBrowser:IE6+.Firefox3+ JavaEE Server:tomcat5. IDE:eclipse.MyEclipse 6.5 Database:MySQL 开发依赖库: JavaEE5.Spring 3.0.5.Mybatis 3.0.2.myBatis-spring-1.0.0-rc2 参考百度文库:http://wenku.baidu.com/view/34559702a6c30c2259019e4e.