基于 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);
    }
相关推荐
初次攀爬者12 小时前
RocketMQ在Spring Boot上的基础使用
java·spring boot·rocketmq
花花无缺12 小时前
搞懂@Autowired 与@Resuorce
java·spring boot·后端
Derek_Smart13 小时前
从一次 OOM 事故说起:打造生产级的 JVM 健康检查组件
java·jvm·spring boot
Nyarlathotep011319 小时前
SpringBoot Starter的用法以及原理
java·spring boot
dkbnull2 天前
深入理解Spring两大特性:IoC和AOP
spring boot
洋洋技术笔记2 天前
Spring Boot条件注解详解
java·spring boot
洋洋技术笔记3 天前
Spring Boot配置管理最佳实践
spring boot
用户8307196840824 天前
Spring Boot 项目中日期处理的最佳实践
java·spring boot
大道至简Edward4 天前
Spring Boot 2.7 + JDK 8 升级到 Spring Boot 3.x + JDK 17 完整指南
spring boot·后端
洋洋技术笔记4 天前
Spring Boot启动流程解析
spring boot·后端