java操作mysql的json字段

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

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将 Java 对象存储到 MySQLJSON 字段中,你可以按照以下步骤进行操作: 1. 首先,确保你的 MySQL 数据库表中有一个 JSON 类型的字段,用于存储 JSON 数据。 2. 将 Java 对象转换为 JSON 字符串。你可以使用 JSON 解析库,如 Jackson、Gson 或 JSON.simple 来实现这一步骤。 - 如果你使用 Jackson 库,可以使用 `ObjectMapper` 对象将 Java 对象转换为 JSON 字符串。例如: ```java ObjectMapper objectMapper = new ObjectMapper(); String jsonString = objectMapper.writeValueAsString(yourObject); ``` 这里的 `yourObject` 是你想要存储为 JSONJava 对象。 - 如果你使用 Gson 库,可以使用 `Gson` 对象将 Java 对象转换为 JSON 字符串。例如: ```java Gson gson = new Gson(); String jsonString = gson.toJson(yourObject); ``` 这里的 `yourObject` 是你想要存储为 JSONJava 对象。 - 如果你使用 JSON.simple 库,可以使用 `JSONObject` 和 `JSONArray` 对象将 Java 对象转换为 JSON 字符串。例如: ```java JSONObject jsonObject = new JSONObject(); jsonObject.put("property", yourObject.getProperty()); // 设置其他属性... String jsonString = jsonObject.toJSONString(); ``` 3. 将生成的 JSON 字符串插入到 MySQL 数据库表的 JSON 字段中。你可以使用 INSERT 语句来实现这一步骤。 ```java String insertQuery = "INSERT INTO your_table (json_column) VALUES (?)"; PreparedStatement statement = connection.prepareStatement(insertQuery); statement.setString(1, jsonString); statement.executeUpdate(); ``` 这里的 `your_table` 是你要插入数据的表名,`json_column` 是 JSON 字段的列名,`connection` 是你的数据库连接对象。 请注意,这只是一种常见的方法,你可以根据自己的需求和使用的 JSON 解析库进行调整。确保将库添加到你的项目依赖中,并按照它们的文档进行配置和使用。同时,还要注意 JSON 字符串的长度限制,确保它不超过 MySQLJSON 字段的最大长度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值