【SpringBoot】model层、dao层、service层、controller层 详解

【SpringBoot】model层、dao层、service层、controller层 学习详解

1、model层

  • model层,又称:数据访问层
  • 一张表对应一个实体类

例:一个User表,对应的是一个实体类User
User表

package com.example.homework.model;

import org.springframework.stereotype.Repository;

@Repository
public class User {
    private Long id;
    private String username;
    private String Password;
    public Long getId() {
        return id;
    }

    public void setId(Long 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) {
        Password = password;
    }
}

2、dao层

  • 数据持久层,用于存放sql语句,在SpringBoot中用注解来为每一个方法注入sql语句
  • 又称为mapper层
    例:对登录注册的检验
@Mapper
@Repository
public interface UserMapper {
    //注册成功,插入一条数据
    @Insert("insert into user(username,password) values (#{username},#{password})")
    void add(User user);
    //检验注册的username是否已经存在数据库中,通过User类创建findByUsername对象,传进username进行与数据库比较
    @Select("select * from user where username = #{username}")
    User findByUsername(@Param("username") String username);
    //登录用:检验账号密码是否正确
    @Select("select * from user where username = #{username} and password = #{password}")
    User findByUsername_login(@Param("username") String username,
                              @Param("password") String password);
}

3、service层

  • 业务逻辑层,用于完成功能设计
  • 一般用于调用dao层的接口,实现业务功能
    例:在List中插入User对象
@Service
public class UserAction {
     public List<User> getUserList(){
         List<User> userList= new ArrayList<>();
         userList.add(new User("11","男"));
         userList.add(new User("22","男"));
         userList.add(new User("33","男"));
         return userList;
     }
}

4、controller层

  • 控制层,实现对Get和Post的相应
  • 用于前后端交互,service层和前端通过Controller层进行数据交互
@Controller
public class LoginController {
    //实现自动装配
    @Autowired
    private UserMapper userMapper;

    //验证账号密码
    @PostMapping("/login")
    //获取三个参数,账号,密码,按钮是否被点击
    public String login(@Param("username") String username,
                        @Param("password") String password,
                        @Param("btn_login") String btn_login,
                        Model model) {
        User user = new User();
        user.setUsername(username);
        user.setPassword(password);
        //使用findByUsername_login()方法,对数据库进行检查,判断账号密码是否正确
        User check_login = userMapper.findByUsername_login(username,password);
        //正确,返回index页面,错误,返回error页面
        if(check_login != null){
            int ok = 1;
            model.addAttribute("ok",ok);
            model.addAttribute("success_login_username",username);
            return "index";
        }else{
            model.addAttribute("error_btn_login",btn_login);
            model.addAttribute("error_login_username",username);
            model.addAttribute("error_login_password",password);
            return "error";
        }
    }
}    
发布了28 篇原创文章 · 获赞 4 · 访问量 1330

猜你喜欢

转载自blog.csdn.net/weixin_44100826/article/details/103230460