基于 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);
    }
相关推荐
Flittly2 天前
【AgentScope Java新手村系列】(16)从RAG到多路检索
java·spring boot·spring
人活一口气2 天前
从JVM调优到MCP协议:Java全栈技术体系深度总结与企业级架构实践
java·spring boot
Java陈序员3 天前
企业级!一个基于 Java 开发的开源 AI 应用开发平台!
spring boot·agent·mcp
杨运交3 天前
[041][公共模块]分布式唯一ID生成器设计与实现:一款灵活可扩展的雪花算法框架
spring boot
Flittly4 天前
【AgentScope Java新手村系列】(14)人机交互
java·spring boot·spring
Flynt5 天前
从Spring Boot 4.0升到4.1,我在Maven和gRPC上栽了跟头
java·spring boot·后端
掉鱼的猫6 天前
Spring Boot → Solon 注解迁移实战指南:一张对照表说清楚
java·spring boot
人活一口气7 天前
Spring Boot与AIGC的完美结合:从零搭建智能内容生成平台
java·spring boot·aigc
java小白小10 天前
SpringBoot(01): 初识SpringBoot,从Spring的痛点说起
spring boot
用户31693538118310 天前
如何从零编写一个 Spring Boot Starter
spring boot