springboot中JSON格式存入mysql
时间: 2025-06-28 19:19:50 浏览: 2
### 将 JSON 格式的数据存储到 MySQL 数据库
为了在 Spring Boot 项目中将 JSON 格式的对象保存至 MySQL 数据库,可以采用多种方法。一种常见的方式是利用 `@Lob` 注解来处理较大的字符串字段,并结合 Jackson 库自动转换 Java 对象与 JSON 字符串。
#### 创建实体类并映射到数据库表
定义一个用于表示要存入数据库的对象的实体类,在该类上应用 JPA 注解以便于 ORM 操作:
```java
import javax.persistence.*;
import com.fasterxml.jackson.databind.ObjectMapper;
@Entity
public class JsonData {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Lob // Large Object, suitable for storing large text like JSON strings.
private String jsonDataString;
public void setJson(Object object) throws Exception {
ObjectMapper mapper = new ObjectMapper();
this.jsonDataString = mapper.writeValueAsString(object);
}
public <T> T getJson(Class<T> valueType) throws Exception {
ObjectMapper mapper = new ObjectMapper();
return mapper.readValue(this.jsonDataString, valueType);
}
}
```
此代码片段展示了如何创建一个名为 `JsonData` 的实体类[^1],其中包含了两个主要的方法:一个是设置 JSON 数据(`setJson`);另一个是从 JSON 字符串反序列化回原始类型的实例 (`getJson`). 使用了 `ObjectMapper` 来完成这些操作.
#### 配置数据源连接信息
确保已经在项目的配置文件 (如 `application.properties` 或者 `application.yml`) 中指定了正确的 JDBC URL 和其他必要的参数:
对于 `application.properties`, 可以这样指定:
```properties
spring.datasource.url=jdbc:mysql://localhost:3306/your_database_name?useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect
spring.jpa.show-sql=true
```
而对于 `application.yml` 文件,则应按照 YAML 语法格式书写相应的键值对[^2]:
```yaml
spring:
datasource:
url: jdbc:mysql://localhost:3306/your_database_name?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8
username: root
password: your_password_here
driver-class-name: com.mysql.cj.jdbc.Driver
jpa:
hibernate:
ddl-auto: update
show-sql: true
```
以上配置使得应用程序能够成功连接到本地运行的 MySQL 实例上的特定数据库,并启用了 SQL 日志记录功能方便调试。
#### 编写服务层逻辑和服务接口
编写 RESTful API 控制器或任何其他形式的服务端点,允许客户端发送 HTTP 请求携带待储存的 JSON 载荷。这里给出简单的例子展示如何接收 POST 请求并将接收到的内容作为 JSON 存储起来:
```java
@RestController
@RequestMapping("/api/jsondata")
public class JsonDataController {
@Autowired
private JsonDataService jsonDataService;
@PostMapping(consumes = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<String> save(@RequestBody Map<String,Object> jsonMap){
try{
JsonData jsonDataEntity = new JsonData();
jsonDataEntity.setJson(jsonMap); // Convert map to string and store it
jsonDataService.save(jsonDataEntity);
return ResponseEntity.ok("Saved successfully.");
}catch(Exception e){
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(e.getMessage());
}
}
}
@Service
public class JsonDataService {
@PersistenceContext
EntityManager entityManager;
public void save(JsonData entity){
entityManager.persist(entity);
}
}
```
上述控制器接受来自客户端的一个 JSON 形式的请求体,将其转化为 `Map<String, Object>` 类型传递给业务逻辑组件进一步处理。最终调用持久化上下文中的 persist 方法把新创建好的实体加入当前事务之中等待提交入库.
阅读全文
相关推荐


















