基于 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);
    }
相关推荐
Chen-Edward2 小时前
有了Spring为什么还有要Spring Boot?
java·spring boot·spring
magic334165632 小时前
Springboot整合MinIO文件服务(windows版本)
windows·spring boot·后端·minio·文件对象存储
小学鸡!3 小时前
Spring Boot实现日志链路追踪
java·spring boot·后端
番茄Salad3 小时前
Spring Boot临时解决循环依赖注入问题
java·spring boot·spring cloud
摇滚侠6 小时前
Spring Boot 3零基础教程,WEB 开发 自定义静态资源目录 笔记31
spring boot·笔记·后端·spring
摇滚侠6 小时前
Spring Boot 3零基础教程,WEB 开发 Thymeleaf 遍历 笔记40
spring boot·笔记·thymeleaf
橘子海全栈攻城狮7 小时前
【源码+文档+调试讲解】基于SpringBoot + Vue的知识产权管理系统 041
java·vue.js·人工智能·spring boot·后端·安全·spring
Json_8 小时前
学习springBoot框架-开发一个酒店管理系统,熟悉springboot框架语法~
java·spring boot·后端
kkkkk0211068 小时前
微服务学习笔记(黑马商城)
java·spring boot·spring·spring cloud·sentinel·mybatis·java-rabbitmq
冲鸭ONE9 小时前
新手搭建Spring Boot项目
spring boot·后端·程序员