我需要使用json去保存数据到mysql的json字段
mysql如下:
模型需要加字段解析注解
/**
* 评价图片
*/
@TableField(typeHandler = JacksonTypeHandler.class)
private JSONObject covers;
需要fastjson依赖和mybatis-plues
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.1</version>
</dependency>
<!--fastjson-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.66</version>
</dependency>
jsonObject存入数据操作
/**
* 添加商品评论
*/
@Override
@Transactional(rollbackFor = Exception.class)
public boolean addMemberFootprint(MultipartFile[] file, RfAddonShopProductEvaluate rfAddonShopProductEvaluate) {
if (file != null) {
// 创建一个jsonObject
JSONObject jsonObject = new JSONObject();
for (int i = 0; i < file.length; i++) {
String path = FileUtil.uploadFile(file[i]);
// 放入jsonobject
jsonObject.put("pic" + i, path);
}
// 放入对象的Cover的jsonObject变量
rfAddonShopProductEvaluate.setCovers(jsonObject);
}
rfAddonShopProductEvaluate.setCommentId(StringUtil.generateShortId());
// 存入数据库
int result = rfAddonShopProductEvaluateMapper.insert(rfAddonShopProductEvaluate);
return result > 0;
}
从数据库取出jsonObject
/**
* 根据商品id进行逻辑删除
*/
@Override
@Transactional(rollbackFor = Exception.class)
public boolean deleteProduct(String commentId) {
// 查询数据
RfAddonShopProductEvaluate evaluate = rfAddonShopProductEvaluateMapper.selectOne(new LambdaQueryWrapper<RfAddonShopProductEvaluate>()
.eq(RfAddonShopProductEvaluate::getCommentId, commentId));
if (ObjectUtils.isEmpty(evaluate)) {
throw new RuntimeException("查询不到对应的评论");
}
// 获取对象的jsonObject属性变量
JSONObject covers = evaluate.getCovers();
// 遍历jsonObject变量
covers.forEach((s, s2) -> FileUtil.deleteFile(s2.toString()));
int result = rfAddonShopProductEvaluateMapper.update(null, new UpdateWrapper<RfAddonShopProductEvaluate>()
.eq("comment_id", commentId)
.set("status", -1));
return result > 0;
}