最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot實(shí)現(xiàn)物品收藏功能

 更新時(shí)間:2021年04月28日 11:09:16   作者:古墓派學(xué)子  
這篇文章主要介紹了SpringBoot實(shí)現(xiàn)物品收藏功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

前后端分離項(xiàng)目–二手交易平臺(tái)小程序

SpringBoot----物品點(diǎn)贊功能實(shí)現(xiàn)
SpringBoot----評(píng)論回復(fù)功能實(shí)現(xiàn)(數(shù)據(jù)庫(kù)設(shè)計(jì))
SpringBoot----文件(圖片)上傳與顯示(下載)

收藏

數(shù)據(jù)庫(kù)設(shè)計(jì):使用了第三張表來(lái)存儲(chǔ)哪個(gè)用戶收藏了哪個(gè)物品

在這里插入圖片描述

寫這個(gè)的時(shí)候壓根沒想到怎么判斷用戶是否已經(jīng)收藏,一開始是前端發(fā)一次請(qǐng)求我后臺(tái)就添加數(shù)據(jù)到數(shù)據(jù)表中。這樣只是用戶可以在我的收藏中查看到收藏了的物品,但是點(diǎn)擊進(jìn)去無(wú)法讓收藏按鈕亮起來(lái)。

在這里插入圖片描述

第一次點(diǎn)擊以后會(huì)亮,之后第二次進(jìn)來(lái)怎么判斷是否收藏這是個(gè)問(wèn)題。
解決:在全局js中寫了一個(gè)請(qǐng)求,就是小程序剛進(jìn)入就發(fā)請(qǐng)求獲取當(dāng)前用戶收藏信息(是一個(gè)數(shù)組)。然后進(jìn)入詳情頁(yè)時(shí)進(jìn)行判斷。并且當(dāng)用戶再次收藏或者取消收藏后更改數(shù)組信息。當(dāng)用戶退出詳情頁(yè)切換到我的界面將這個(gè)數(shù)組發(fā)送到后臺(tái)更新數(shù)據(jù)庫(kù)

在這里插入圖片描述

后臺(tái)代碼:這個(gè)你就必須去判斷前端返回的數(shù)組和你數(shù)據(jù)庫(kù)當(dāng)前數(shù)組有哪些區(qū)別,你是增加還是刪除信息,或者既要新增又要?jiǎng)h除
數(shù)據(jù)庫(kù)原有id【1,2,3】
前端返回id【1,4,5】
這個(gè)時(shí)候你既要找出2,3去刪除,又要找出4,5去新增。

@Override
    public int addGoodsInCar(@RequestBody JSONObject sums) {
        String openid = sums.getString("openid");
        JSONArray gid = sums.getJSONArray("gid");
        if (openid==null||gid==null){
            return 0;
        }
        JSONArray  gidf = (JSONArray)gid.clone();//深拷貝
        ArrayList<Integer> integers = shoppingCarMapper.selectByOpenid(openid);
        int a = 1;
        if (integers.size()==0 ){
            ShoppingCar car = new ShoppingCar();
            car.setOpenid(openid);
            car.setGid(gid.getInteger(0));
            a = shoppingCarMapper.insert(car);
        }
        if (!integers.isEmpty()){
            //去重

                Iterator<Object> it = gid.iterator();
                while(it.hasNext()){
                    Integer gid1 =(Integer) it.next();

                    integers.forEach(item -> {
                        if(item == gid1){
                            it.remove();
                        }
                    });
                }

                Iterator<Object> it1 = gid.iterator();

                while (it1.hasNext() && a==1){
                    int next = (int)it1.next();
                    ShoppingCar car = new ShoppingCar();
                    car.setOpenid(openid);
                    car.setGid(next);
                    a = shoppingCarMapper.insert(car);
                }

                Iterator<Integer> integers0 = integers.iterator();

                while(integers0.hasNext()){
                    Integer gid1 =integers0.next();
                    gidf.forEach(item -> {
                        if(item == gid1){
                            integers0.remove();
                        }
                    });
                }
                Iterator<Integer> iterator2 = integers.iterator();

                while (iterator2.hasNext() && a==1){
                    int next = iterator2.next();
                    ShoppingCar car = new ShoppingCar();
                    car.setOpenid(openid);
                    car.setGid(next);
                    a = shoppingCarMapper.deleteCar(car);
                }


            if (a==0){
                return 0;
            }else {
                return 1;
            }
        }
       return 0;

    }

到此這篇關(guān)于SpringBoot實(shí)現(xiàn)物品收藏功能的文章就介紹到這了,更多相關(guān)SpringBoot物品收藏內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java中Optional.of()方法及源碼解析(非常詳細(xì)!)

    Java中Optional.of()方法及源碼解析(非常詳細(xì)!)

    這篇文章主要給大家介紹了關(guān)于Java中Optional.of()方法及源碼解析的相關(guān)資料,Java中java.util .Optional類的of()方法用于獲得該Optional類中具有指定類型的指定值的一個(gè)實(shí)例,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-06-06
  • Async的線程池使用選擇解析

    Async的線程池使用選擇解析

    這篇文章主要為大家介紹了Async的線程池使用選擇解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • Spring?Boot的無(wú)縫銜接實(shí)踐案例

    Spring?Boot的無(wú)縫銜接實(shí)踐案例

    在快速迭代的軟件開發(fā)環(huán)境中,無(wú)縫銜接是提升開發(fā)效率、降低維護(hù)成本、增強(qiáng)系統(tǒng)穩(wěn)定性的關(guān)鍵,本文將深入解析Spring?Boot無(wú)縫銜接的幾大優(yōu)勢(shì),并通過(guò)實(shí)際案例和深入分析,展示這些優(yōu)勢(shì)如何在項(xiàng)目中發(fā)揮作用
    2024-08-08
  • Java中轉(zhuǎn)義字符反斜杠\的代替方法及repalceAll內(nèi)涵解析

    Java中轉(zhuǎn)義字符反斜杠\的代替方法及repalceAll內(nèi)涵解析

    這篇文章主要介紹了Java中轉(zhuǎn)義字符反斜杠\的代替方法及repalceAll內(nèi)涵解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • IDEA中將SpringBoot項(xiàng)目提交到git倉(cāng)庫(kù)的方法步驟

    IDEA中將SpringBoot項(xiàng)目提交到git倉(cāng)庫(kù)的方法步驟

    本文主要介紹了IDEA中將SpringBoot項(xiàng)目提交到git倉(cāng)庫(kù)的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • RabbitMQ中的Connection和Channel信道詳解

    RabbitMQ中的Connection和Channel信道詳解

    這篇文章主要介紹了RabbitMQ中的Connection和Channel信道詳解,信道是建立在 Connection 之上的虛擬連接,RabbitMQ 處理的每條 AMQP 指令都是通過(guò)信道完成的,需要的朋友可以參考下
    2023-08-08
  • Java接收text/event-stream格式數(shù)據(jù)的詳細(xì)代碼

    Java接收text/event-stream格式數(shù)據(jù)的詳細(xì)代碼

    這篇文章主要介紹了java接收text/event-stream格式數(shù)據(jù),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • Mybatis SQL運(yùn)行流程源碼詳解

    Mybatis SQL運(yùn)行流程源碼詳解

    這篇文章主要介紹了Mybatis SQL運(yùn)行流程源碼詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • java實(shí)現(xiàn)異步線程,回調(diào)接口方式

    java實(shí)現(xiàn)異步線程,回調(diào)接口方式

    這篇文章主要介紹了java實(shí)現(xiàn)異步線程,回調(diào)接口方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07

最新評(píng)論

海晏县| 彝良县| 辽宁省| 宁海县| 舟山市| 博湖县| 嘉黎县| 瑞昌市| 霍林郭勒市| 新巴尔虎左旗| 开阳县| 三台县| 通化县| 玉门市| 柘城县| 乌海市| 钦州市| 恩平市| 蚌埠市| 海阳市| 乌兰浩特市| 自贡市| 嘉义市| 伊金霍洛旗| 方山县| 伊宁市| 达州市| 光山县| 瑞金市| 嘉鱼县| 岳西县| 高台县| 灵宝市| 平潭县| 汾西县| 古交市| 凤庆县| 龙井市| 阿城市| 云浮市| 偏关县|