MySQL存储Java对象

1、存储Java对象的方法

下面有三种方式,可以存储Java对象。

  • 1、将Java对象中的每一个字段都存入表中。
    • 优点:每个字段都可以被检索
    • 缺点:针对每个需要存储的对象,都要创建数据表。一个类对应一张表
  • 2、将Java对象序列化之后,存入Blob字段或者Text。
    • 优点:可以存储超大的对象,并且没有大小限制
    • 缺点:Blob数据类型的缺点,检索上存在问题
  • 3、保存为JSON字符串,使用VARCHAR数据类型存储
    • 优点:可以存储完整的对象,反序列化也很方便。
    • 缺点:不方便检索内容,需要提前估计JSON字符串大小。
    • 场景:适合不需要检索,只用查询和存储展示。
  • 4、MySQL 5.7 支持 json 类型存储。

第一种方法比较常规。

第二种方法,BLOB(Binary Large Object)与TEXT是为存储二进制大数据类型的,大多数情况下BLOB类型的列可以视为足够大的VARBINARY类型的列,采用二进制与字符串方式存储。BLOB和TEXT属于相同类型的数据,所以下面对BLOB和TEXT都简称BLOB。

BLOB的局限性:[2]

  • 服务器不能在内存临时表中存储BLOB
  • 查询涉及BLOB的值,会在磁盘上创建临时表,这样导致效率很低
    • 通过SUBSTRING()函数,转化为VARCHAR
    • 让临时表更快一些:把临时表放在基于内存的
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将 Java 对象存储MySQL 的 JSON 字段中,你可以按照以下步骤进行操作: 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` 是你想要存储为 JSON 的 Java 对象。 - 如果你使用 Gson 库,可以使用 `Gson` 对象Java 对象转换为 JSON 字符串。例如: ```java Gson gson = new Gson(); String jsonString = gson.toJson(yourObject); ``` 这里的 `yourObject` 是你想要存储为 JSON 的 Java 对象。 - 如果你使用 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 字符串的长度限制,确保它不超过 MySQL 中 JSON 字段的最大长度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值