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; /**
* <p>
*
* </p>
*
* @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"])]

springboot处理blog字段的更多相关文章

  1. springBoot+MybatisPlus数据库字段使用驼峰命名法时报错

    假如有个实体类: package com.jeff.entity; public class User { /** * 主键id */ private Integer id; /** * 登陆名 */ ...

  2. SpringBoot 定义通过字段验证

    第一步:定义ValidationResult类 public class ValidationResult { // 校验结果是否有错 private boolean hasErrors = fals ...

  3. SpringBoot 使用Mybatis-Plus

    简介 Mybatis-Plus(简称MP)是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发.提高效率而生. 特性 无侵入:Mybatis-Plus 在 My ...

  4. springboot教程

    http://www.cnblogs.com/java-zhao/tag/spring-boot/ http://blog.csdn.net/liaokailin/article/category/5 ...

  5. Kotlin开发springboot项目(三)

    Kotlin开发springboot项目(三) 在线工具 https://www.sojson.com IDEA中Kotlin生成可执行文件1,项目使用Gradle构建2,在model的build.g ...

  6. 关于SpringBoot的自动配置和启动过程

    一.简介 Spring Boot简化了Spring应用的开发,采用约定大于配置的思想,去繁从简,很方便就能构建一个独立的.产品级别的应用. 1.传统J2EE开发的缺点 开发笨重.配置繁多复杂.开发效率 ...

  7. Spring Cloud 和dubbo

    一.SpringCloud微服务技术简介 Spring Cloud 作为Java 语言的微服务框架,它依赖于Spring Boot,有快速开发.持续交付和容易部署等特点.Spring Cloud 的组 ...

  8. Mybatis - 动态sql

    learn from:http://www.mybatis.org/mybatis-3/dynamic-sql.html mybatis支持动态拼接sql语句.主要有: if choose (when ...

  9. Django Form and Modelform Admin定义 高级查询)

    Django的form表单一般具有两种功能 1. 验证输入 2.输入HTML ---------模板----------- from django import forms class BookFor ...

随机推荐

  1. Flask-SQLAlchemy 使用教程

    Flask-SQLAlchemy ,是对SQLAlchemy进一步封装 SQLAlchemy使用教程地址: https://www.cnblogs.com/bigox/p/11552542.html ...

  2. IOC——Spring的bean的管理(注解方式)

    注解(简单解释) 1.代码里面特殊标记,使用注解可以完成一定的功能 2.注解写法 @注解名称(属性名称=属性值) 3.注解使用在类上面,方法上面和属性上面 注意:注解方式不能完全替代配置文件方式 Sp ...

  3. springboot-mail发邮件,不需要邮件服务器

    很简单 步骤走起-> 1.需要一个邮箱账号,我以163邮箱为例,先开启第三方服务后获得密码,后面用来邮箱登录 2.加入mail 依赖 3.properties配置账号和第三方服务密码(不是邮箱密 ...

  4. elasticsearch 5.6.7在线安装ik分词,亲测有效

    官网的在线安装命令 ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/rele ...

  5. 全网最硬核 Java 新内存模型解析与实验单篇版(不断更新QA中)

    个人创作公约:本人声明创作的所有文章皆为自己原创,如果有参考任何文章的地方,会标注出来,如果有疏漏,欢迎大家批判.如果大家发现网上有抄袭本文章的,欢迎举报,并且积极向这个 github 仓库 提交 i ...

  6. Redis++:Redis做分布式锁真的靠谱吗

    Redis做分布式锁真的靠谱吗 Redis的分布式锁可以通过Lua进行实现,通过setnx和expire命令连用的方式 || 也可以使用高版本的方法同时设置失效时间,但是假如在以下情况下,就会造成无锁 ...

  7. 自制jq分页插件

    由于第一次写jq插件,中间有借鉴别人的代码. (function(){ var ms = { fillHtml: function(obj, option) { obj.empty(); var to ...

  8. 利用AudioContext来实现网易云音乐的鲸鱼音效

    一直觉得网易云音乐的用户体验是很不错的,很早就注意到了里面的鲸鱼音效,如下图,就是一个环形的跟着音乐节拍跳动的特效. gif动图可能效果不太理想,可以直接在手机上体验 身为前端凭着本能的好奇心和探索心 ...

  9. Html5 Canvas学习之路(五)

    Canvas 图像(上) Canvas 图像API可以加载图像数据,然后直接将图像应用到画布上.还可以裁切.拼贴图像数据,以显示用户需要的部分.此外,Canvas还提供了像素数据的存储功能,这样就能对 ...

  10. javaweb图书管理系统之不同用户跳转不同页面

    关于分级自测题,我们知道该系统一共分为两个角色,一个是读者,一个是管理员,我们需要根据不同用户去到不同的页面,所以我们需要写一个登陆界面. 本文先写这个功能的实现,该功能主要在servlet里面实现. ...