mysql json List<String>
时间: 2025-03-18 09:12:45 浏览: 27
### MySQL JSON 类型与 Java `List<String>` 的交互
在现代数据库设计中,MySQL 提供了对 JSON 数据类型的原生支持。这使得存储复杂数据结构变得更加容易。当需要将 MySQL 中的 JSON 列映射到 Java 的 `List<String>` 时,可以通过 JDBC 和 Jackson 库来实现转换。
#### 使用 MySQL JSON 列
假设有一个表 `example_table`,其中有一列名为 `json_column`,该列的数据类型为 `JSON`。此列可能包含类似于以下的内容:
```json
["item1", "item2", "item3"]
```
要查询并将其转换为 Java 的 `List<String>`,可以按照以下方式操作。
---
#### 查询 MySQL JSON 并解析为 `List<String>`
以下是完整的代码示例,展示如何从 MySQL 获取 JSON 数据并将其转换为 Java 的 `List<String>`:
```java
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.List;
public class JsonToListExample {
public static void main(String[] args) {
String jdbcUrl = "jdbc:mysql://localhost:3306/testdb";
String username = "root"; // 替换为实际用户名
String password = ""; // 替换为实际密码
try (Connection connection = DriverManager.getConnection(jdbcUrl, username, password)) {
String query = "SELECT json_column FROM example_table WHERE id = ?";
PreparedStatement preparedStatement = connection.prepareStatement(query);
preparedStatement.setInt(1, 1); // 假设我们查找 ID=1 的记录
ResultSet resultSet = preparedStatement.executeQuery();
while (resultSet.next()) {
String jsonString = resultSet.getString("json_column");
ObjectMapper objectMapper = new ObjectMapper();
List<String> list = objectMapper.readValue(jsonString,
new TypeReference<List<String>>() {});
System.out.println(list); // 输出列表内容
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
上述代码实现了以下几个功能:
- 连接 MySQL 数据库[^1]。
- 执行 SQL 查询以检索 JSON 数据。
- 将返回的 JSON 字符串反序列化为 Java 的 `List<String>`[^3]。
---
#### 插入 Java `List<String>` 转换为 MySQL JSON
如果需要将 Java 的 `List<String>` 存储到 MySQL 的 JSON 列中,则可以使用 Jackson 或 Gson 来完成这一过程。下面是一个简单的例子:
```java
import com.fasterxml.jackson.databind.ObjectMapper;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.util.Arrays;
import java.util.List;
public class ListToJsonExample {
public static void main(String[] args) {
String jdbcUrl = "jdbc:mysql://localhost:3306/testdb";
String username = "root"; // 替换为实际用户名
String password = ""; // 替换为实际密码
List<String> items = Arrays.asList("item1", "item2", "item3");
try (Connection connection = DriverManager.getConnection(jdbcUrl, username, password)) {
ObjectMapper objectMapper = new ObjectMapper();
String jsonString = objectMapper.writeValueAsString(items);
String insertQuery = "INSERT INTO example_table (id, json_column) VALUES (?, ?)";
PreparedStatement preparedStatement = connection.prepareStatement(insertQuery);
preparedStatement.setInt(1, 1); // 设置主键值
preparedStatement.setString(2, jsonString); // 设置 JSON 字段
int rowsAffected = preparedStatement.executeUpdate();
System.out.println(rowsAffected + " row(s) inserted.");
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
这段代码完成了以下任务:
- 创建了一个 `List<String>` 对象。
- 使用 Jackson 将其序列化为 JSON 字符串。
- 将字符串插入到 MySQL 表中的 JSON 列。
---
#### 注意事项
1. **驱动程序配置**:确保已正确设置 MySQL 驱动类名 `com.mysql.cj.jdbc.Driver`。
2. **Jackson 依赖项**:项目需引入 Jackson 库以便于 JSON 处理。
```xml
<!-- Maven Dependency -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.13.0</version>
</dependency>
```
---
阅读全文
相关推荐



















