iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >SSM框架下各层的示例分析
  • 641
分享到

SSM框架下各层的示例分析

2023-06-29 07:06:41 641人浏览 泡泡鱼
摘要

这篇文章给大家分享的是有关SSM框架下各层的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。SSM框架SSM框架是spring mvc ,Spring和mybatis框架的整合,是标准的MVC模式,将整个系

这篇文章给大家分享的是有关SSM框架下各层的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

SSM框架

SSM框架是spring mvc ,Spring和mybatis框架的整合,是标准的MVC模式,将整个系统划分为表现层(WEB),controller层,service层,dao层四层,使用spring MVC负责请求的转发和视图管理。

Spring实现业务对象管理,Mybatis作为数据对象的持久化引擎。

SSM框架下各层的示例分析

  • 表现层(web):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。

  • 业务逻辑层(service):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。

  • 数据访问层(dao):该层所做事务直接操作数据库,针对数据的增添、删除、修改、更新、查找等。

DataBase ===> Entity ===> Mapper.xml ===> Dao.Java ===> Service.java ===> Controller.java ===> html CSS js(thymeleaf)

各层解释说明

idea创建一个Maven项目结构如左图所示,在该项目中,有五个包,分别是controller、dao、entity、service和serviceimpl:

SSM框架下各层的示例分析

描述
实体层数据库在项目中的类,主要用于定义与数据库对象应的属性,提供get/set方法,tostring方法,有参无参构造函数。
持久层与数据库交互,dao层首先会创建dao接口,接着就可以在配置文件中定义该接口的实现类;接着就可以在模块中调用dao的接口进行数据业务的处理,而不用关注此接口的具体实现类是哪一个类,dao层的数据源和数据库连接的参数都是在配置文件中进行配置的。
业务层控制业务,业务模块的逻辑应用设计,和dao层一样都是先设计接口,再创建要实现的类,然后在配置文件中进行配置其实现的关联。接下来就可以在service层调用接口进行业务逻辑应用的处理。
实现层实现service接口的所有方法,整合service和dao
控制层controller层主要调用Service层里面的接口控制具体的业务流程,控制的配置也要在配置文件中进行。Controller和Service的区别是:Controller负责具体的业务模块流程的控制;Service层负责业务模块的逻辑应用设计

entity层(model层)

实体层用于存放我们的实体类,与数据库中的属性值基本保持一致,实现set和get的方法。

1.导入lombok小辣椒驱动依赖,用来生成get/set方法依赖:

package com.dvms.entity;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;import lombok.ToString;import lombok.experimental.Accessors;import java.util.Date;@Data@ToString@AllArgsConstructor@NoArgsConstructor@Accessors(chain = true) //链式调用public class Emp {    private String id;    private String name;    private Double salary;    private Integer age;    private Date bir;}

2.传统方式

package com.umf.entity;import java.io.Serializable;public class UpdataSettingEntity implements Serializable {private static final long serialVersionUID = 1L;//private Integer id = 1;//private int updataflag;public void setId(Integer id) {this.id = id;}public Integer getId() {return id;}public void setUpdataflag(int updataflag) {this.updataflag = updataflag;}public int getUpdataflag() {return updataflag;}}

dao层(mapper层)

dao层(接口类)对数据库进行数据持久化操作,他的方法语句是直接针对数据库操作的,主要实现一些增删改查操作,在Mybatis中方法主要与与xxxDao(Mapper).xml内相互一一映射。

Mybatis可以用.xml进行数据操作,也可以在dao层用注解的方式,也可以采取xml和dao层接口组合使用的方法(常用)。

package com.dvms.dao;import com.dvms.entity.User;import org.apache.ibatis.annotations.Param;import org.springframework.stereotype.Repository;import java.util.List;@Repositorypublic interface UserDao {    //登录    User login(@Param("username") String username, @Param("passWord") String password);// 在mybatis中传递多个参数要做参数的绑定    //新增用户(注册)    void save(User user);    //查询所有用户    List<User> findAlluser();    //删除用户    void delete(String id);    //修改用户信息(先查再改)    User update(String id);    void add(User user);}

xxxDao(Mapper).xml:

关键: < mapper namespace=“com.dvms.dao.UserDao”>

前提:基本数据库语法

<?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.dvms.dao.UserDao"><!--注册/新增用户-->    <insert id="save" parameterType="User">        insert into user (id,username,password,sex,phone,email,role) values (#{id},#{username},#{password},#{sex},#{phone},#{email},#{role})    </insert><!--登录验证-->    <select id="login" resultType="User">        select id,username,password,sex,phone,email,role from user        where username =#{username} and password =#{password}    </select><!--查询所有用户-->    <select id="findAlluser" resultType="User">        select id,username,password,sex,phone,email,role from user    </select><!--删除用户-->    <delete id="delete" parameterType="String">        delete from user where id=#{id}    </delete><!--修改用户信息-->    <!--查到要修改的用户信息-->    <select id="update" parameterType="String" resultType="User">        select id,username,password,sex,phone,email,role from user where id=#{id}    </select>    <!--修改用户信息-->    <update id="add" parameterType="User">        update user set username=#{username},password=#{password},sex=#{sex},phone=#{phone},email=#{email},role=#{role} where id=#{id}    </update></mapper>

在dao层用注解的方式:

public interface StudentDao {        @Select("select * from student where stu_id=#{stuId}")    public Student queryById(int stuId);}

service层

service层(接口类)为controller层的类提供接口进行调用,一般就是自己写的方法封装起来,具体实现在serviceImpl中。

service层是建立在dao层之上的,建立了dao层后才可以建立service层,而service层又是在controller层之下的,因而service层应该既调用dao层的接口,又要提供接口给Controller层的类来进行调用,它刚好处于一个中间层的位置。每个模型都有一个service接口,每个接口分别封装各自的业务处理方法。

package com.dvms.service;import com.dvms.entity.User;import java.util.List;public interface UserService {    //新增用户    void save(User user);    //登录    User login(String username, String password);    //查询所有用户    List<User> findAlluser();    //删除用户    void delete(String id);    //修改用户信息    User update(String id);    void add(User user);}

servicedmpl(实现service层,整合service和dao)(导入dao层)(接口实现类)

package com.dvms.service.Impl;import com.dvms.dao.UserDao;import com.dvms.entity.User;import com.dvms.service.UserService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import java.util.List;import java.util.UUID;@Servicepublic class UserServiceImpl implements UserService {    @Autowired    private UserDao userDao;    @Override    public void save(User user) {        user.setId(UUID.randomUUID().toString());        userDao.save(user);    }    @Override    public User login(String username, String password) {        return userDao.login(username,password);    }    @Override    public List<User> findAlluser() {        return userDao.findAlluser();    }    @Override    public void delete(String id) {        userDao.delete(id);    }    @Override    public User update(String id) {        return userDao.update(id);    }    @Override    public void add(User user) {        userDao.add(user);    }}

Controller层(web 层)

负责具体模块的业务流程控制(获取参数(前端传过来)返回响应(前端或数据库或一个指定路径)),需要调用service逻辑设计层的接口来控制业务流程(导入service层)。

package com.dvms.controller;import com.dvms.entity.Emp;.....@Controllerpublic class EmpController {    @Autowired    private EmpService empService;    @GetMapping("emp/findAll")    public String findAll(@RequestParam(defaultValue = "1") int pageNum,                          @RequestParam(defaultValue = "5") int pageSize,                          Model model){        PageHelper.startPage(pageNum,pageSize);//        PageInfo<Emp> pageInfo = new PageInfo<>(empService.findAll());        model.addAttribute("pageInfo",pageInfo);//        List<Emp> emps = empService.findAll();//        model.addAttribute("emps",emps);        return "ems/tables";    }    @RequestMapping("/emp/save")    public String save(Emp emp){        empService.save(emp);        return "redirect:/emp/findAll";    }}

Controller层调用了Service层的接口方法,Service层调用Dao层的方法,其中调用的参数是使用Entity层进行传递的。View层与Controller层协同工作,主要负责界面展示。

感谢各位的阅读!关于“SSM框架下各层的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: SSM框架下各层的示例分析

本文链接: https://www.lsjlt.com/news/323548.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SSM框架下各层的示例分析
    这篇文章给大家分享的是有关SSM框架下各层的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。SSM框架SSM框架是spring MVC ,Spring和Mybatis框架的整合,是标准的MVC模式,将整个系...
    99+
    2023-06-29
  • SSM框架的示例分析
    这篇文章主要为大家展示了“SSM框架的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“SSM框架的示例分析”这篇文章吧。SSM图示流程:Spring核心:Java反射Mybatis:动态代...
    99+
    2023-06-15
  • 关于SSM框架下各层的解释说明(Controller等)
    目录SSM框架各层解释说明entity层(model层)dao层(mapper层)service层Controller层(web 层)SSM框架 SSM框架是spring MVC ,...
    99+
    2024-04-02
  • SSM框架下结合log4j、slf4j打印日志的示例分析
    这篇文章主要介绍SSM框架下结合log4j、slf4j打印日志的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!具体如下:首先加入log4j和slf4j的jar包 <!-- 日志处理&...
    99+
    2023-05-30
    log4j ssm slf4j
  • impress.js表现层框架的示例分析
    这篇文章主要介绍impress.js表现层框架的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!------------------正文分割线------------------ 概述 如果你已经厌烦了使用Po...
    99+
    2023-06-08
  • C++string底层框架的示例分析
    小编给大家分享一下C++string底层框架的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一、 前言主要说明浅拷贝和深拷贝的优缺点,以及仿写string类的逻辑并分析实现过程二、 浅拷贝与深拷贝优缺点1. 浅拷贝...
    99+
    2023-06-25
  • 持久层ORM框架中Hibernate框架的示例分析
    这篇文章主要介绍了持久层ORM框架中Hibernate框架的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。前言hibernate的概念:hibernate是一个orm...
    99+
    2023-06-25
  • idea中ssm框架编码问题的示例分析
    这篇文章主要为大家展示了“idea中ssm框架编码问题的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“idea中ssm框架编码问题的示例分析”这篇文章吧。idea中ssm框架的编码问题介...
    99+
    2023-06-15
  • SSM框架整合之Spring+SpringMVC+MyBatis的示例分析
    这篇文章主要介绍了SSM框架整合之Spring+SpringMVC+MyBatis的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1、基本概念1.1、SpringSp...
    99+
    2023-06-15
  • layer弹出层框架alert与msg的示例分析
    小编给大家分享一下layer弹出层框架alert与msg的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!layer至今仍...
    99+
    2024-04-02
  • Flask框架的示例分析
    这篇文章主要介绍Flask框架的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!对于python中的框架来说,虽然有一些大型的框架可以供我们挑选,但有时候我们处理数据用不到那么难的框架,这样反而会增加处理数据的...
    99+
    2023-06-14
  • SpringMVC框架的示例分析
    小编给大家分享一下SpringMVC框架的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!简介SpringMVC采用模型(Model)-视图(View)-控...
    99+
    2023-06-02
  • CSS框架sass的示例分析
    这期内容当中小编将会给大家带来有关CSS框架sass的示例分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。sass结尾的文件有着更严格的格式要求,scss文件更贴近原生...
    99+
    2024-04-02
  • html中框架的示例分析
    小编给大家分享一下html中框架的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! 框架是什么?框架就是在一个窗口可以显...
    99+
    2024-04-02
  • MINA框架的视图层和逻辑层实例分析
    本篇内容主要讲解“MINA框架的视图层和逻辑层实例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MINA框架的视图层和逻辑层实例分析”吧!1. 开篇导言    目标用户:...
    99+
    2023-06-26
  • SSM框架流程及原理分析
    前言:学ssm框架已经有很长时间,今天来复习一下 SSM图示流程: Spring核心:Java反射 Mybatis:动态代理,而动态代理又是基于反射的,所以,ssm框架核心原理在反...
    99+
    2024-04-02
  • CSS框架开发的示例分析
    这期内容当中小编将会给大家带来有关CSS框架开发的示例分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 Philip Walton 在AppFolio担任前端工程师,他...
    99+
    2024-04-02
  • SimpleCommand框架ImageLoader API的示例分析
    这篇文章主要介绍SimpleCommand框架ImageLoader API的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!在ImageLoader中有以下几个不同的构造器: public ...
    99+
    2023-05-30
    simplecommand imageloader
  • php开发框架的示例分析
    这篇文章给大家分享的是有关php开发框架的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、LaravelLaravel是一款免费并且开源的PHP应用框架,它是为开发基于MVC的WEB应用而设计的,个人觉...
    99+
    2023-06-14
  • java框架整合的示例分析
    java框架整合的示例分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。框架整合:Springmvc + Mybatis + Shiro(权限) + REST(服务) + We...
    99+
    2023-06-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作