前言代码实现结果
前言主要就是想实现这个功能,比如新增商品的时候,在多个sku中,每个sku有不同的标签,那么对应的spu中就应该包含所有sku去重后的标签。
如,spu的每个包含的sku值如下:
| id | data |
|---|---|
| 8 | [“hot”,“new”] |
| 9 | [“hot”] |
那么,spu里面的标签应该就是:每个sku去重后的标签
| id | data |
|---|---|
| 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
);



