栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

数据库中Json格式的Array数据去重

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数据库中Json格式的Array数据去重

目录

前言代码实现结果

前言

主要就是想实现这个功能,比如新增商品的时候,在多个sku中,每个sku有不同的标签,那么对应的spu中就应该包含所有sku去重后的标签。

如,spu的每个包含的sku值如下:

iddata
8[“hot”,“new”]
9[“hot”]

那么,spu里面的标签应该就是:每个sku去重后的标签

iddata
12[“new”,“hot”]
代码实现
// 获取goodsID下面所有的sku的data
 String data1 = jsonService.getLog(9).getData();
 String data2 = jsonService.getLog(8).getData();
// 把所有的sku的data转化为list
 List list1 = JSONArray.parseArray(data1);
 List list2 = JSONArray.parseArray(data2);
// 利用set中元素的不重复性进行去重
 HashSet hs = new HashSet();
 hs.addAll(list1);
 hs.addAll(list2);
// 再把去重后的数据存入spu里面的标签中
 String s = JSONObject.toJSONString(hs);
 Log log1 = new Log();
 log1.setId(12);
 log1.setData(s);
 jsonService.insert(log1);
结果

去重成功!

JsonController

@RestController
public class JsonController {

    @Autowired
    private JsonService jsonService;

    @GetMapping
    public String test() {
        String name = "["hot"]";
        Log log = new Log();
        log.setId(80);
        log.setData(name);
        jsonService.insert(log);
        return "success";
    }

    @GetMapping("/test")
    public  void get() {
        String data1 = jsonService.getLog(9).getData();
        String data2 = jsonService.getLog(3).getData();

        List list1 = JSONArray.parseArray(data1);
        List list2 = JSONArray.parseArray(data2);
        HashSet hs = new HashSet();
        hs.addAll(list1);
        hs.addAll(list2);

        System.out.println(hs);
        String s = JSONObject.toJSONString(hs);
        Log log1 = new Log();
        log1.setId(17);
        log1.setData(s);
        jsonService.insert(log1);
    }

    @GetMapping("/test2")
    public void get2(){
        // 19 ["new","hot"]
        jsonService.insertTest(19,"["new","hot"]");
    }


}

JsonService

@Service
public class JsonService {

    @Autowired
    private TestMapper testMapper;

    public void insert(Log log) {
        testMapper.insert(log);
    }

    public Log getLog(Integer id){
        LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(Log::getId,id);
        Log log = testMapper.selectOne(queryWrapper);
        return log;
    }

    public void insertTest(Integer id,String name) {
        testMapper.insertTest(id,name);
    }
}

TestMapper.java

@Mapper
public interface TestMapper extends baseMapper {

    int insertTest(@Param("id") Integer id, @Param("name") String name);
}

TestMapper.xml


    
        insert into log (id,data) values (#{id},#{name})
    

数据库DDL语句

-- auto-generated definition
create table log
(
    id   int auto_increment
        primary key,
    data json null
);
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/782224.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号