springboot处理blog字段

springboot处理blog字段,第1张

springboot处理blog字段

欢迎关注博主公众号「Java大师」, 专注于分享Java领域干货文章https://www.javaman.cn/

1、数据库表结构

其中content为longblob字段,代表存入的内容

CREATE TABLE `t_post` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `channel_id` int(11) DEFAULT NULL,
  `created` datetime DEFAULT NULL,
  `status` int(11) NOT NULL,
  `summary` varchar(140) COLLATE utf8_bin DEFAULT NULL,
  `tags` varchar(64) COLLATE utf8_bin DEFAULT NULL,
  `title` varchar(64) COLLATE utf8_bin DEFAULT NULL,
  `views` int(11) NOT NULL,
  `weight` int(11) NOT NULL,
  `description` varchar(255) COLLATE utf8_bin DEFAULT NULL,
  `keywords` varchar(255) COLLATE utf8_bin DEFAULT NULL,
  `content` longblob,
  PRIMARY KEY (`id`),
  KEY `IK_CHANNEL_ID` (`channel_id`)
) ENGINE=InnoDB AUTO_INCREMENT=81 DEFAULT CHARSET=utf8 COLLATE=utf8_bin
2、创建对应的实体类model

将content内容生命为byte[]类型

private byte[] content;

package com.dsblog.server.model;

import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 

* *

* * @author java大师 * @since 2022-05-05 */
@Data @EqualsAndHashCode(callSuper = false) @TableName("t_post") @ApiModel(value="Post对象", description="") public class Post implements Serializable { private static final long serialVersionUID = 1L; @ApiModelProperty(value="id") @TableId(value = "id", type = IdType.AUTO) private Long id; @ApiModelProperty(value="栏目") @TableField(value = "channel_id") private Integer channelId; @ApiModelProperty(value="创建时间") @TableField(fill = FieldFill.INSERT) private LocalDateTime created; @ApiModelProperty(value="状态") private Integer status; @ApiModelProperty(value="概要") private String summary; @ApiModelProperty(value="标签") private String tags; @ApiModelProperty(value="标题") private String title; @ApiModelProperty(value="访问次数") private Integer views; @ApiModelProperty(value="权重") private Integer weight; @ApiModelProperty(value="描述") private String description; @ApiModelProperty(value="关键词") private String keywords; @ApiModelProperty(value="内容") @JsonDeserialize(using = PostDeserializer.class) private byte[] content; }
3、创建反序列化注释类
package com.dsblog.server.config;

import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;

import java.io.IOException;

public class PostDeserializer extends JsonDeserializer {
    @Override
    public Object deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
        ObjectMapper mapper = (ObjectMapper) jsonParser.getCodec();
        JsonNode textNode = mapper.readTree(jsonParser);
        return textNode.asText().toString().getBytes("UTF-8");
    }
}
4、修改model类的content,增加注解

@JsonDeserialize(using = PostDeserializer.class)
private byte[] content;

5、添加post信息
@ApiOperation(value = "添加文章")
@PostMapping("/")
public ResultBean addPost(@RequestBody Post post){
    if (postService.saveOrUpdate(post)){
        return ResultBean.success("添加成功");
    }
    return ResultBean.error("添加失败");
}
6、测试 1-输入请求参数,点击发送

2-content已经插入成功

注意:如果不对content进行反序列化,添加会报如下错误:

Resolved [org.springframework.http.converter.HttpMessageNotReadableException:
 JSON parse error: Invalid UTF-8 start byte 0xa4; 
nested exception is com.fasterxml.jackson.databind.JsonMappingException: 
Invalid UTF-8 start byte 0xa4<LF> at [Source: (PushbackInputStream); line: 3, column: 20] 
(through reference chain: com.xxxx.model.Post["content"])]

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/876804.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-13
下一篇 2022-05-13

发表评论

登录后才能评论

评论列表(0条)

保存