苍穹外卖day04总结
分页查询理解
最近在重学Java,在作分页查询功能的时候对其实现有点不清晰,来记录一下
前端所传参数的使用:
分页查询,前端传给后端的参数是当前页码和每页展示的记录数
****上述两个参数在后端中可以用于计算起始索引(第几条数据)
分页查询执行的核心sql语句是:select * from date limit 起始索引,每页展示数
起始索引=(页码-1)*每页展示的记录数
后端返回给前端的参数为查询到的 数据列表(List)和总记录数
可是我们怎么返回给前端那
后端返回给前端的是一个Result对象{code,msg,data}(注 data是存放数据对象的)
后端返回的数据是要返回给前端 只能通过Result中的data,所以创建一个对象ResultPage存储数据列表(List)和总记录数用于返回给前端。
为了简化操作,Mybatis提供了一个分页插件PageHelper
在ServiceImpl包下使用PageHelper插件
让后调用PageHelper的startPage(page,pageSize)
传入的参数为要查询的页码,和每页的显示数量,是设置分页查询的参数
再使用Mapper直接查询所有的数据---返回的是List<类型>集合
强制类型转换为PageHelper中的Page类型,转换成Page类型就可以根据转换的对象获取ResultPage所需要的数据,这个类型用于返回前端所需要的数据
联表查询:
在写接口的过程中,实体出现多对多的,当要实现修改或者增加功能时,可能会出现多对多的关系
比如在外卖业务中,套餐和菜品就是多对多的关系,当修改套餐信息的时候,要开启事务,对套餐表和套餐菜品关系表都做出更新操作,分两步完成1.先完成套餐表的更新2.删除套餐关系表中所有该套餐id的信息再进行重新添加
遇到多对多的关系的时候,多对多的连接表几乎都是先删除后重新插入(我目前碰到的)