我需要使用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;
    }

 

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐