Springboot中pojo层,DAO层(mapper层),service层,controller层的理解

  • pojo

实体类这一层,与数据库中的属性值基本保持一致。有的开发写成pojo,有的写成model,也有domain,也有dto(这里做参数验证,比如password不能为空等),实体类如果不懂什么东西的话,那你就想成是范围。

mysql的数据不是一个表吗,每个表有几行和几列,pojo层中要定义一个User对象,该对象中的数据对应mysql表中的数据。

  • mapper(DAO)

DAO层叫数据访问层,全称为data access object,也叫mapper层 。某个DAO一定是和数据库的某一张表一一对应的,其中封装了CRUD(增加Create、检索Retrieve、更新Update和删除Delete)基本操作,DAO只做原子操作。无论多么复杂的查询,dao只是封装增删改查。至于增删查改如何去实现一个功能,dao是不管的。

定义一个接口,继承自BaseMapper,可以通过该接口来访问数据库,进行增删改查。

@Mapper
public interface UserMapper extends BaseMapper {
}
//这是一个UserMapper

@Autowired//使用数据库必须得用该注解
UserMapper usermapper;
usermapper.insert();//往数据库中插入一个数据,mybatisplus会把该语句转换成sql语句
usermapper.selectList(null);//在数据库中选择数据

关于selectList方法:

里面的参数类型传递的得是queryWrapper该类的对象。

queryWrapper又是什么:

queryWrapper是mybatis plus中实现查询的对象封装操作类,可以封装sql对象,包括where条件,order by排序,select字段等等

用人话说就是,通过queryWrapper可以限定我们查询的条件。

那queryWrapper怎么用:

先来个常用的:

@GetMapping("/user/{userId}/")
    //@PathVariable就是从路径中获取变量
    //使用@PathVariable之后,@GetMapping("/user/{userId}/")中的userId就传到了(@PathVariable int userId)中
    public User getuser(@PathVariable int userId) {
        //定义了一个类型为User的QueryWeapper对象
        QueryWrapper queryWrapper = new QueryWrapper<>();
        //从User(User对应着数据库)中选出 id 为 userId 的数据
        queryWrapper.eq("id", userId);
        return userMapper.selectOne(queryWrapper);
    }

queryWrapper的所有方法:

Springboot中pojo层,DAO层(mapper层),service层,controller层的理解_第1张图片

  • service

通过数据库实现具体的业务

Service层叫业务层,被称为服务,粗略的理解就是对一个或多个DAO进行的再次封装,封装成一个服务,所以这里也就不会是一个原子操作了,需要事物控制。管理具体的功能的。

service包含了serviceImpl(service接口的实现类) 是提供给controller 使用的,针对于某些业务将 dao 的对于某些表的crud进行组合,也就是说间接的和数据库打交道。

  • controller

控制层,前后端交互

Controler负责请求转发,接受页面过来的参数,传给Service处理,接到返回值,再传给页面。管理业务(Service)调度和管理跳转的。

你可能感兴趣的:(SpringBoot,mybatis,数据库,mysql)