云计算百科
云计算领域专业知识百科平台

Mapper和Service的工作流程是怎样的?(通俗易懂版)

Mapper 和 Service 的工作流程就像工厂里的“原材料采购”和“产品加工”环节,配合起来完成从“数据获取”到“业务实现”的全流程,具体可以分为以下几步:

完整工作流程(以“用户分页查询”为例):

1. 前端发起请求

用户在网页上点击“查看第2页用户,每页10条”,前端把请求(pageNum=2&pageSize=10)发给后端的 Controller(控制器)。

2. Controller 接收请求,调用 Service

Controller 像“调度员”,收到请求后不做具体处理,直接把任务交给 Service(业务层):

@Controller
public class UserController {
@Autowired
private UserService userService;

// 接收分页查询请求
@GetMapping("/users")
public String getUsers(Integer pageNum, Integer pageSize, Model model) {
// 调用 Service 处理业务
PageInfo<User> pageInfo = userService.findByPage(pageNum, pageSize);
// 把结果传给视图展示
model.addAttribute("pageInfo", pageInfo);
return "userList";
}
}

3. Service 处理业务逻辑,调用 Mapper 获取原始数据

Service 像“加工车间”,先做业务判断,再调用 Mapper 拿“原材料”(数据库原始数据):

@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper; // 依赖 Mapper

@Override
public PageInfo<User> findByPage(Integer pageNum, Integer pageSize) {
// 业务处理1:校验参数(比如页码不能小于1)
if (pageNum == null || pageNum < 1) {
pageNum = 1;
}
if (pageSize == null || pageSize < 1) {
pageSize = 10;
}

// 业务处理2:初始化分页插件
PageHelper.startPage(pageNum, pageSize);

// 调用 Mapper 获取原始数据(从数据库查所有用户)
List<User> userList = userMapper.selectAll();

// 业务处理3:包装成分页结果(含总页数、总条数等)
return new PageInfo<>(userList);
}
}

4. Mapper 执行 SQL,从数据库取数据

Mapper 像“采购员”,接到 Service 的指令后,直接去数据库“采购”原始数据:

  • 接口定义(UserMapper.java):声明要执行的操作

    @Mapper
    public interface UserMapper {
    // 声明“查询所有用户”的操作
    List<User> selectAll();
    }

  • SQL 实现(UserMapper.xml):执行具体的 SQL

    <mapper namespace="com.example.mapper.UserMapper">
    <!– 执行“查所有用户”的 SQL,返回原始数据 –>
    <select id="selectAll" resultType="User">
    select * from user
    </select>
    </mapper>

    执行后,数据库返回所有用户的原始列表(比如100条数据)。

5. 数据从 Mapper 回到 Service,完成业务加工

Mapper 把从数据库查到的 100 条用户数据返回给 Service,Service 用分页插件处理后,只保留第2页的10条数据(第11-20条),并计算出总页数(10页)、总条数(100条)等信息,包装成 PageInfo 对象。

6. Service 把结果返回给 Controller,最终展示给用户

Service 把处理好的分页结果(PageInfo)返回给 Controller,Controller 再传给前端视图,最终网页上展示“第2页的10条用户数据”和分页按钮(上一页、下一页等)。

流程总结:

前端请求 → Controller(调度)→ Service(业务处理)→ Mapper(查数据库)→ 数据库

前端展示 ← Controller(传结果)← Service(加工数据)← Mapper(返回原始数据)

  • Mapper 只做一件事:执行 SQL 从数据库拿原始数据,是“数据入口”。
  • Service 核心职责:调用 Mapper 拿数据,然后按业务规则加工(验证、计算、过滤等),是“业务核心”。
  • 两者配合:通过“Service 调用 Mapper”的方式,实现“数据获取→业务处理”的完整流程,既分工明确又协同工作。
赞(0)
未经允许不得转载:网硕互联帮助中心 » Mapper和Service的工作流程是怎样的?(通俗易懂版)
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!