基于 Spring Boot 瑞吉外卖系统开发(十三)

发布于:2025-05-14 ⋅ 阅读:(8) ⋅ 点赞:(0)

基于 Spring Boot 瑞吉外卖系统开发(十三)

查询套餐

在这里插入图片描述
在这里插入图片描述
在查询套餐信息时包含套餐的分类名,分类名称在category表中,因此这里需要进行两表关联查询。
自定义SQL如下:

select s.* ,c.`name` as category_name from setmeal s
left join  category c on c.id=s.category_id

在这里插入图片描述

创建SetmealDto文件

用来存储和传输套餐数据对象

@Data
public class SetmealDto extends Setmeal {
    private String categoryName;
}

创建SetmealMapper.xml配置文件

配置自定义SQL

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.itheima.reggie.mapper.SetmealMapper">

    <select id="selectSetmealDtoPage" resultType="com.itheima.reggie.dto.SetmealDto">
        select s.* ,c.`name` as category_name from setmeal s
        left join  category c on c.id=s.category_id
    </select>

</mapper>

SetmealMapper添加id接口方法

@Mapper
public interface SetmealMapper extends BaseMapper<Setmeal> {

    public Page<SetmealDto> selectSetmealDtoPage(Page page);

}

SetmealService和SetmealServiceImpl添加对应调用方法


public interface SetmealService extends IService<Setmeal> {
    public Page<SetmealDto> selectSetmealDtoPage(Page page);
}

@Service
public class SetmealServiceImpl extends ServiceImpl<SetmealMapper, Setmeal> implements SetmealService {

    @Autowired
    private SetmealMapper setmealMapper;

    @Override
    public Page<SetmealDto> selectSetmealDtoPage(Page page) {
        return setmealMapper.selectSetmealDtoPage(page);
    }
}

SetmealController类中添加分页查询套餐的方法

@RestController
@RequestMapping("/setmeal")
public class SetmealController {

    @Autowired
    private SetmealService setmealService;

    @GetMapping("/page")
    public R<Page<SetmealDto>> page(int page, int pageSize){
        Page pageInfo = new Page(page,pageSize);
        setmealService.selectSetmealDtoPage(pageInfo);
        return R.success(pageInfo);
    }

}

运行测试

套餐所有属性正常显示。
在这里插入图片描述

自定义SQL模糊查询

搜索框输入套餐名称查询。
在这里插入图片描述

自定义SQL语句添加查询条件

    <select id="selectSetmealDtoPage" resultType="com.itheima.reggie.dto.SetmealDto">
        select s.* ,c.`name` as category_name from setmeal s
        left join  category c on c.id=s.category_id
        <if test="name!=null">
            where   s.name like #{name}
        </if>
    </select>

添加套餐名称参数

@Mapper
public interface SetmealMapper extends BaseMapper<Setmeal> {

    public Page<SetmealDto> selectSetmealDtoPage(Page page,@Param("name") String name);

}

修改controller方法,接收查询套餐名称参数。

    @GetMapping("/page")
    public R<Page<SetmealDto>> page(int page, int pageSize,String name){
        Page pageInfo = new Page(page,pageSize);
       	if(name!=null){
            name = "%"+name+"%";
        }
        setmealService.selectSetmealDtoPage(pageInfo,name);
        return R.success(pageInfo);
    }

网站公告

今日签到

点亮在社区的每一天
去签到