- 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<User> {
}
//这是一个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<User> queryWrapper = new QueryWrapper<>();
//从User(User对应着数据库)中选出 id 为 userId 的数据
queryWrapper.eq("id", userId);
return userMapper.selectOne(queryWrapper);
}
queryWrapper的所有方法:
- service
通过数据库实现具体的业务
Service层叫业务层,被称为服务,粗略的理解就是对一个或多个DAO进行的再次封装,封装成一个服务,所以这里也就不会是一个原子操作了,需要事物控制。管理具体的功能的。
service包含了serviceImpl(service接口的实现类) 是提供给controller 使用的,针对于某些业务将 dao 的对于某些表的crud进行组合,也就是说间接的和数据库打交道。
- controller
控制层,前后端交互
Controler负责请求转发,接受页面过来的参数,传给Service处理,接到返回值,再传给页面。管理业务(Service)调度和管理跳转的。