ssm框架各个层作用,ssm controller层

  ssm框架各个层作用,ssm controller层

  00-1010 sm框架层解释实体层(模型层)dao层(映射器层)服务层控制器层(web层)

  

目录

SSM框架是spring MVC、spring和Mybatis框架的集成,是一个标准的MVC模型。整个系统分为四层:表示层(web)、控制器层、服务层和dao层。spring MVC用于负责请求转发和视图管理。

 

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

  通俗的讲,表现层(web):就是呈现给用户的界面,也就是用户在使用一个系统时看到的和得到的。业务逻辑层(service):对于具体问题的操作也可以说是数据层的操作,数据业务的逻辑处理。数据访问层(dao):层的事务直接操作数据库,针对数据的添加、删除、修改、更新、查询等。数据库===实体===mapper . XML===Dao.Java===Service.java===Controller.java===html CSS js(百里香叶)

  00-1010用左图所示的IDEA创建一个maven项目结构。在这个项目中,有五个包,分别是控制器、dao、实体、服务和serviceimpl:

  描述项目中实体层数据库的类,主要用于定义数据库对象对应的属性,提供get/set方法、tostring方法、带参数和不带参数的构造函数。持久层与数据库交互。dao层首先创建dao接口,然后在配置文件中定义接口的实现类。然后就可以在模块中调用dao的接口来处理数据服务,而不管这个接口的具体实现类是哪个类。dao层的数据源和数据库连接参数在配置文件中配置。业务层控制业务,业务模块的逻辑应用设计和dao层一样,是先设计接口,然后创建要实现的类,再在配置文件中配置其实现的关联。接下来,您可以调用服务层中的接口来处理业务逻辑应用程序。实现层中服务接口的所有方法,集成服务和dao控制层。控制器层主要调用服务层中的接口来控制具体的业务流程,对控件的配置也要在配置文件中进行。控制器和服务的区别在于,控制器负责具体业务模块流程的控制;服务层负责业务模块的逻辑应用设计。

  

SSM框架

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

 

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

  包com . dvms . entity;进口龙目岛。AllArgsConstructor进口龙目岛。数据;进口龙目岛。NoArgsConstructor进口龙目岛。ToString导入lombok . experimental . accessors;导入Java . util . date;@ data @ tostring @ allargsconstructor @ noargsconstructor @ accessors(chain=true)//链调用公共类Emp { private String id私有字符串名称;私人双薪;私有整数年龄;私人日期bir}2.传统方式

  包com . umf . entity;导入Java . io . serializable;公共类UpdataSettingEntity实现Serializable { private static final long serial version uid=1L;//私有整数id=1;//private int updataflag;/* * *设置:*/public void setid(integer id){ this . id=id;}/* * * Get:*/公共整数

  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层协同工作,主要负责界面展示。

 

  以上为个人经验,希望能给大家一个参考,也希望大家多多支持盛行IT。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: