【SpringBoot】model层、dao层、service层、controller层 学习详解
1、model层
- model层,又称:数据访问层
- 一张表对应一个实体类
例:一个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";
}
}
}