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

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

查询套餐


在查询套餐信息时包含套餐的分类名,分类名称在category表中,因此这里需要进行两表关联查询。

自定义SQL如下:

sql 复制代码
select s.* ,c.`name` as category_name from setmeal s
left join  category c on c.id=s.category_id

创建SetmealDto文件

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

java 复制代码
@Data
public class SetmealDto extends Setmeal {
    private String categoryName;
}

创建SetmealMapper.xml配置文件

配置自定义SQL

xml 复制代码
<?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接口方法

java 复制代码
@Mapper
public interface SetmealMapper extends BaseMapper<Setmeal> {

    public Page<SetmealDto> selectSetmealDtoPage(Page page);

}

SetmealService和SetmealServiceImpl添加对应调用方法

java 复制代码
public interface SetmealService extends IService<Setmeal> {
    public Page<SetmealDto> selectSetmealDtoPage(Page page);
}
java 复制代码
@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类中添加分页查询套餐的方法

java 复制代码
@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语句添加查询条件

xml 复制代码
    <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>

添加套餐名称参数

java 复制代码
@Mapper
public interface SetmealMapper extends BaseMapper<Setmeal> {

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

}

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

java 复制代码
    @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);
    }
相关推荐
二哈喇子!17 分钟前
若依【(前后端分离版)SpringBoot+Vue3】
java·spring boot·后端
paopaokaka_luck20 分钟前
婚纱摄影管理系统(发送邮箱、腾讯地图API、物流API、webSocket实时聊天、协同过滤算法、Echarts图形化分析)
vue.js·spring boot·后端·websocket·算法·echarts
雾林小妖5 小时前
springboot集成deepseek
java·spring boot·后端
苦学编程的谢7 小时前
Mybatis_4
java·spring boot·tomcat·mybatis·mybatis_plus
她说..8 小时前
MybatisPlus-快速入门
java·spring boot·spring cloud·微服务·mybatis·mybatisplus
tuokuac9 小时前
创建的springboot工程java文件夹下还是文件夹而不是包
java·spring boot·后端
Hejjon10 小时前
携带参数的表单文件上传 axios, SpringBoot
java·spring boot·后端
荔枝爱编程10 小时前
高性能企业级消息中心架构实现与分享(三):数据存储设计与高可用保障
spring boot·后端·消息队列
武昌库里写JAVA10 小时前
【MySQL】MySQL数据库如何改名
java·vue.js·spring boot·sql·学习
neoooo13 小时前
《锁得住,才能活得久》——一篇讲透 Redisson 分布式锁的技术实录
java·spring boot·redis