SSM 框架整合实例

说明:文章所有内容截选自实验楼教程:【SSM 框架整合实例】~

一、实验介绍

1.1 实验内容

SSM(Spring+Spring MVC+MyBatis)是媲美于 SSH 框架的轻量级 Java EE 框架。本次项目课的场景,假设为开发一个简单的用户基本信息的管理网站,在数据库中存在的每一个用户都可以登录网站,然后在网站上进行用户的管理(增删改查)。主要目的是为了展示如何整合 SSM 框架。

1.2 实验知识点

  • Spring 框架
  • Spring MVC 框架
  • MyBatis 框架
  • MySQL

1.3 实验环境

  • Tomcat 7
  • JDK1.7
  • Eclipse JavaEE
  • Firefox浏览器
  • MySQL 5.5.50
  • Xfce终端

1.4 适合人群

本课程难度偏上,属于中高级课程,适合具有Java Web 和框架知识的同学学习,帮助他们更加清晰、透彻地理解和应用框架。

1.5 代码获取

你可以在Xfce终端下通过下面命令将实验的完整工程项目下载到实验楼环境中,作为参照对比进行学习。

wget http://labfile.oss.aliyuncs.com/courses/817/SSMTest.tar

二、实验原理

(1)前置课程

在开始本课程前,请同学们先学习 Spring、Spring MVC、MyBatis 三个框架的基础知识。

  • 本次项目课的场景,假设为开发一个简单的用户基本信息的管理网站,在数据库中存在的每一个用户都可以登录网站,然后在网站上进行用户的管理(增删改查)。

(2)SSM 框架分析

在实际项目中,我们采用 SSM 框架进行开发,Spring MVC 用于 Web 层,相当于 Controller,处理请求并作出响应;MyBatis 作为持久层的框架,可以自由的控制 SQL,更加简捷地完成数据库操作;Spring 的依赖注入可以减少代码的耦合,可以装配 Bean,另外其 AOP、事务管理尤其方便,同时,Spring 可以将各层进行整合。

SSM 框架整合实例_第1张图片
此处输入图片的描述

三、项目文件结构

SSM 框架整合实例_第2张图片
此处输入图片的描述

SSM 框架整合实例_第3张图片
此处输入图片的描述

四、开发准备

本次课程 SSM 框架的版本:

  • Spring 4.2.0 RELEASE
  • Spring MVC 4.2.0 RELEASE
  • MyBatis 3.3.0

SSM 框架整合所需的 jar 包已经放在实验楼的服务器中,请打开实验环境桌面上的 Xfce ,输入下面的代码获取:

wget http://labfile.oss.aliyuncs.com/courses/817/ssm-jars.zip

输入下面的命令解压 .zip 文件:

unzip ssm-jars.zip

五、实验步骤

5.1 数据库准备

本次课程使用 MySQL 数据库。首先启动 mysql :

$ sudo service mysql start

然后在终端下输入以下命令,进入到 MySQL 数据库(-u 表示用户名,比如这里的 root,-p 表示密码,这里没有密码就省略了):

$ mysql -u root
SSM 框架整合实例_第4张图片
此处输入图片的描述

为了实验方便,我们在这里新建一个数据库并取名 ssm 用作实验。

create database ssm;

此处输入图片的描述

在数据库 ssm 下创建表 user ,代码如下:

use ssm;
mysql> create table user(
    -> id int primary key auto_increment,
    -> username varchar(20),
    -> password varchar(20),
    -> sex varchar(10),
    -> age int);
SSM 框架整合实例_第5张图片
此处输入图片的描述

我们先往 user 表插入一条测试数据:

insert into user(username,password,sex,age) value('shiyanlou','123456','male',22);
SSM 框架整合实例_第6张图片
此处输入图片的描述

5.2 新建工程项目

首先在 Eclipse 里新建一个 Web 工程(Dynamic Web Project),命名为 SSMTest

SSM 框架整合实例_第7张图片
此处输入图片的描述
SSM 框架整合实例_第8张图片
此处输入图片的描述

点击 Next注意勾选 “自动生成 web.xml” 这个选项。

同时,将 /home/shiyanlou/ssm-jars/ 路径下的全部 jar 包拷贝到项目的 WebContent/WEB-INF/lib/ 目录下。导入的 jar 包包括:

  • Spring 框架 jar 包
  • MyBatis 框架 jar 包
  • MyBatis 整合 Spring 中间件 jar 包
  • aspectj 框架 jar 包
  • aopalliance.jar
  • 数据库驱动 jar 包
  • 数据源 c3p0 jar 包
  • JSTL 标签库 jar 包
  • 单元测试 junit.jar

这些 jar 包在本项目中可能并没有完全用到。

/Java Resources/src 下新建各层的包,如图:

SSM 框架整合实例_第9张图片
此处输入图片的描述
  • model 下是一系列 POJO,即各种实体类
  • mapper 相当于 DAO 层,由于这里采用 MyBatis,所以把它称为 Mapper,其下包括 Mapper 接口和 Mapper 配置文件,通过 SQL 语句的映射完成 CRUD 操作
  • service 由一系列业务逻辑对象组成,放置各种 service 接口
  • service.impl 是 service 的具体实现
  • controller 由一系列控制器组成,处理用户请求并作出响应

5.3 model 层实体类 User

在包 com.shiyanlou.model 下新建类 User.java, 一个用户具有:id、username、password、sex、age 五个属性,代码如下:

package com.shiyanlou.model;

public class User {
    private Integer id;       // 用户 id
    private String username;  // 用户名
    private String password;  // 密码
    private String sex;       // 性别
    private Integer age;      // 年龄

    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;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
    
    // 重写了 toString 方法,方便后面的测试
    public String toString() {
        return "id:" + id + ",username:" + username + ",password:" + password
                + ",sex:" + sex + ",age:" + age;

    }
}

5.4 mapper(dao) 层实现

在包 com.shiyanlou.mapper 下建一个 UserMapper.java 接口文件和 UserMapper.xml

UserMapper 接口的代码如下:

package com.shiyanlou.mapper;

import java.util.List;

import com.shiyanlou.model.User;

public interface UserMapper {
    
    /**
     * 用户登录查询
     * @param user 
     * @return User
     **/
    public User selectLogin(User user);
    
    /**
     * 查询全部用户
     * @return List
     **/
    public List selectAllUser();
    
    /**
     * 新增用户
     * @param user 
     **/
    public void addUser(User user);
    
    /**
     * 更新用户
     * @param user 
     **/
    public void updateUser(User user);
    
    /**
     * 删除用户
     * @param id 
     **/
    public void deleteUser(Integer id);
}

UserMapper.xml 的配置如下:




    
    
        
        
        
        
        
    
    
    
    
    
    
    
        insert
        into user(username,password,sex,age)
        values(#{username},#{password},#{sex},#{age})
    
    
    
        update user set
        username=#{username},password=#{password},sex=#{sex},age=#{age} where
        id=#{id}
    
    
    
        delete from user where
        id=#{id}
    


到这里, DAO 层的代码就写完了,接下来我们来实现 Service 层的代码。

注:MyBatis 的配置文件放在整合时在进行处理。

5.5 service 层实现

5.5.1 Service 层接口

在包 com.shiyanlou.service 下建一个 UserService.java 接口文件,添加如下代码:

package com.shiyanlou.service;

import java.util.List;
import com.shiyanlou.model.User;

public interface UserService {
    
    /**
     * 用户登录
     * @param user 
     * @return 登录成功返回 User 对象,失败返回 null
     **/
    User login(User user);
    
    /**
     * 查询所有用户 
     * @return 查询到的所有 User 对象的 list
     **/
    List selectAllUser();
    
    /**
     * 新增用户
     * @param user 
     **/
    void addUser(User user);
    
    /**
     * 更新用户
     * @param user 
     **/
    void updateUser(User user);
        
    /**
     * 删除用户
     * @param id(用户 id) 
     **/
    void deleteUser(Integer id);
}

5.5.2 Service 层接口实现类

在包 com.shiyanlou.service.impl 下建一个类 UserServiceImpl.java ,用来实现 UserService 接口中的方法,添加如下代码:

package com.shiyanlou.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.shiyanlou.mapper.UserMapper;
import com.shiyanlou.model.User;
import com.shiyanlou.service.UserService;

/**
 * 将当前类注释为一个 Spring 的 bean
 **/
@Service
@Transactional
public class UserServiceImpl implements UserService{
    /**
     * 自动注入 UserMapper
     **/
    @Autowired
    public UserMapper userMapper;
    
    // 下面是 UserService 接口所有方法的具体实现
    @Override
    public User login(User user) {
        return userMapper.selectLogin(user);
    }
    @Override
    public List selectAllUser() {
        List users = userMapper.selectAllUser();
        return users;
    }
    @Override
    public void addUser(User user) {
        userMapper.addUser(user);
    }
    @Override
    public void updateUser(User user) {
        userMapper.updateUser(user);
    }
    @Override
    public void deleteUser(Integer id) {
        userMapper.deleteUser(id);
    }
}

到这里, Service 层的代码就写完了,接下来将 Spring 和 MyBatis 进行整合。

由于篇幅有限,关于:

  • Spring 和 MyBatis 整合
  • Spring、MyBatis 整合测试
  • Spring MVC 的整合
  • 项目测试

这4项内容,点击【SSM 框架整合实例】即可完整查看了~

你可能感兴趣的:(SSM 框架整合实例)