前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在线问题反馈模块实战(十六)​:实现查详情功能

在线问题反馈模块实战(十六)​:实现查详情功能

作者头像
bug菌
发布2023-05-27 15:57:53
1720
发布2023-05-27 15:57:53
举报

👨‍🎓作者:bug菌  ✏️博客:​​CSDN​​​、​​掘金​​等 💌公众号:​​猿圈奇妙屋​​ 🚫特别声明:原创不易,转载请附上原文出处链接和本文声明,谢谢配合。 🙏版权声明:文章里可能部分文字或者图片来源于互联网或者百度百科,如有侵权请联系bug菌处理。

一、概述🔥

       接下来的这几期,bug菌想跟大家分享一下自己昨天刚接到一个临时的需求,热乎着呢,想分享一下自己是如何面对临时需求并制定整个开发周期,其中包括从梳理业务到创建业务表再到实现业务逻辑形成闭环再到与前端对接,其中会穿插一些业务拓展及功能性拓展,这一条龙流程在线与大家一起见证,分享给刚入门的小伙伴,希望对你们有所帮助。

环境说明:idea2019.3 + springboot2.3.1.REALSE + mybati-plus3.2.0 + mysql5.6 + jdk1.8

二、正文🔥

        落花有意流水无情,今天的上海,又是淅淅沥沥的一天。今天我下班的有点晚,楼下长排队做了个核酸,可烦了,回到家,随便吃了点东西我就急急冲冲的坐在了电脑面前,怕没有时间把今天的文章给总结出来。于是乎我一打开看到有个读者私信,问我说怎么坚持写博客分享的,我给他回了一句,“遵从自己的内心意愿,想清楚自己要什么就行,有些事坚持是毫无意义的,而有些事是坚持就一定是有意思的,尽管它前期不能让你致富,也不能让你变得出名,但是凡是投资自己的行为,都是值得的。”不知道我这句回复,他是否能够理解,总之就是不要强迫自己去做任何事,这样 就会失去这件事的乐趣的。

        然后对于你们,有些读者而言,可能也是在坚持输出,虽然并没有收获多少粉丝 浏览 点赞,但是能坚持,就很了不起。

        回归正题,今天还是接着更新《问题反馈模块》,还剩几个接口没有总结成文章分享出来,所以趁着现在还不用上晚班,就赶紧把自己想做的事儿给干完, 毕竟一件事就要有始有终,等后期回想起来,就怕太晚。

        所以今天这期就给大家实现一个简单的业务需求,点击问题标题,弹框展示其选择的那条问题详细,也就是包括该条记录的有所数据进行返回,目前是不需要联表查询其他关联字段,因为在前期设计表结构时,就把一些关联字段做了冗余保存,所以对于目前的业务场景,我就不需要连表查询啦。

        废话不多说,咱们就开始这期的正文吧。

三、如何代码实现分页查询功能🔥

1️⃣定义Controller请求

        对于根据主键id查询单条记录,说实在的这接口逻辑非常的简单,为什么呢?mybatis就有封装其根据主键id查询的方法,直接使用即可,但是我这里还需要对删除状态的数据进行过滤,所以该方法我不能直接使用,还是得自己定义一个查询方法返回对象。 

在线问题反馈模块实战(十六)​:实现查详情功能_数据
在线问题反馈模块实战(十六)​:实现查详情功能_数据

具体定义接口请求如下: 

代码语言:javascript
复制
/**
     * 反馈问题详情
     */
    @GetMapping("/detail")
    @ApiOperation(value = "问题反馈详情", notes = "根据id查询问题反馈详情")
    public ResultResponse<UserQuestionsEntity> detail(@ApiParam("要查询的这条数据id") @RequestParam("id") {
        return new ResultResponse<>(userQuestionsService.getEntityById(id));
    }

2️⃣定义接口方法getEntityById

          直接定义好getEntityById接口方法,要实现的具体逻辑就是在实现类中具体重写即可。

代码语言:javascript
复制
UserQuestionsEntity getEntityById(String id);

3️⃣实现getEntityById方法

        该方法,其实业务逻辑就简单两个条件,条件1是根据主键id查询,条件2是按!status = 2,所以接下来, 我们还是直接使用mp提供的条件构造器,.eq() 与.ne()方法足够使用,但是对于!status = 2,我们也可以用.notIn()方法来代替,不单纯是固定一种方式来实现。

具体实现接口如下:

代码语言:javascript
复制
@Override
    public UserQuestionsEntity getEntityById(String id) {

        LambdaQueryWrapper<UserQuestionsEntity> wrapper = new LambdaQueryWrapper<>();
        wrapper.notIn(UserQuestionsEntity::getStatus,2); //除去删除状态的不给查询外,其他的都可。
        wrapper.eq(UserQuestionsEntity::getId,id);

        return this.getOne(wrapper);
    }

对于 .ne()方法使用,我也给大家演示一下。

代码语言:javascript
复制
wrapper.ne(UserQuestionsEntity::getStatus,2);

4️⃣接口测试

  接下来, 我们来测试一下我们上方写的接口,看看逻辑是否有问题,我们就直接通过swagger接口文档来测吧。我先传个status = 2的记录id进行查询,看看我们的条件是否都生效?

具体请看执行sql,是正确的。 

在线问题反馈模块实战(十六)​:实现查详情功能_字段_02
在线问题反馈模块实战(十六)​:实现查详情功能_字段_02

接下来,我们具体传一个存在的id,看看数据是否能被查询出来?

在线问题反馈模块实战(十六)​:实现查详情功能_封装_03
在线问题反馈模块实战(十六)​:实现查详情功能_封装_03

​非常OK!没啥毛病,你们写对了嘛。可以看一眼真实的sql执行语句。

代码语言:javascript
复制
==>  Preparing: SELECT id,question_content,creator_dept_name,creator_name,update_time,creator_account_id,create_by,in_page,create_time,update_by,question_type,file_paths,solve_content,status,solver FROM user_questions WHERE (status NOT IN (?) AND id = ?) 
==> Parameters: 2(Integer), 039fffdcf41fa1fe2ec962bb8277ffb6(String)
<==      Total: 1

5️⃣总结

        对于越简单的逻辑接口而言,我们都要百分百用心写。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-10-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、概述🔥
  • 二、正文🔥
  • 三、如何代码实现分页查询功能🔥
    • 1️⃣定义Controller请求
      • 2️⃣定义接口方法getEntityById
        • 3️⃣实现getEntityById方法
          • 4️⃣接口测试
            • 5️⃣总结
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档