收藏功能数据库如何实现一个字段存储多条数据

数据库

一、表设计

如果大家做收藏功能,肯定会遇到存储String数组类型或者int数组类型的情况,这种时候数据库中表字段反而不好对应存储在这里我推荐一下我使用的一种方法,首先我做的是帖子类的收藏功能,所以对应的收藏的帖子id是Interger类型的,我在数据库选择使用varchar,后端选择使用String类型来记录这个数组,设计是

   private String myfavorites;

这是pojo类里对应的字段,数据库则是在这里插入图片描述

后端

那么在这种情况下我们可以利用;来进行数据的多条存储,举个例子,一旦我收藏了某个帖子我就往该字段添加帖子id和;例如1;2;3然后我们在后端就可以利用String自带的split方法来分割得到正确的id并且根据id来得到对应的帖子返回数据展示在前端,提供一下我的逻辑处理:

  @PostMapping("/user/favority")
    public R<List<Post>> GetMyfavorite(@RequestBody String token){
        LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
        token = token.substring(0,token.length()-1);
        String[] split = token.split("\\+");
        token = split[0]+" "+split[1];
        queryWrapper.eq(User::getToken,token);
        User res = userService.getOne(queryWrapper);
        //数据库使用分号来间隔,后端需要分割分号来得到帖子Id
        String myfavorites = res.getMyfavorites();
        String[] postIds = myfavorites.split(";");
        List<Post> favority = new ArrayList<>();
        LambdaQueryWrapper<Post> queryWrapper1 = new LambdaQueryWrapper<>();
        for (String postId : postIds) {
            Integer newid = Integer.valueOf(postId);
            //得到对应的帖子并且存入favority数组中
            queryWrapper1.eq(Post::getId,newid);
            Post mylove = postService.getOne(queryWrapper1);
            queryWrapper1.clear();
            favority.add(mylove);
        }
        return R.success(favority);
    }

这里简单解释一下,首先是根据jwt令牌得到当前是哪个用户,由于前端传参问题的存在,需要对传过来的token进行处理,然后得到了对应的User以后,在得到数据库中的字段内容,然后就是利用迭代器得到所有的帖子信息存储到List中最终返回给前端。
希望帖子对大家有帮助

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值