springboot处理blog字段
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字段的更多相关文章
- springBoot+MybatisPlus数据库字段使用驼峰命名法时报错
假如有个实体类: package com.jeff.entity; public class User { /** * 主键id */ private Integer id; /** * 登陆名 */ ...
- SpringBoot 定义通过字段验证
第一步:定义ValidationResult类 public class ValidationResult { // 校验结果是否有错 private boolean hasErrors = fals ...
- SpringBoot 使用Mybatis-Plus
简介 Mybatis-Plus(简称MP)是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发.提高效率而生. 特性 无侵入:Mybatis-Plus 在 My ...
- springboot教程
http://www.cnblogs.com/java-zhao/tag/spring-boot/ http://blog.csdn.net/liaokailin/article/category/5 ...
- Kotlin开发springboot项目(三)
Kotlin开发springboot项目(三) 在线工具 https://www.sojson.com IDEA中Kotlin生成可执行文件1,项目使用Gradle构建2,在model的build.g ...
- 关于SpringBoot的自动配置和启动过程
一.简介 Spring Boot简化了Spring应用的开发,采用约定大于配置的思想,去繁从简,很方便就能构建一个独立的.产品级别的应用. 1.传统J2EE开发的缺点 开发笨重.配置繁多复杂.开发效率 ...
- Spring Cloud 和dubbo
一.SpringCloud微服务技术简介 Spring Cloud 作为Java 语言的微服务框架,它依赖于Spring Boot,有快速开发.持续交付和容易部署等特点.Spring Cloud 的组 ...
- Mybatis - 动态sql
learn from:http://www.mybatis.org/mybatis-3/dynamic-sql.html mybatis支持动态拼接sql语句.主要有: if choose (when ...
- Django Form and Modelform Admin定义 高级查询)
Django的form表单一般具有两种功能 1. 验证输入 2.输入HTML ---------模板----------- from django import forms class BookFor ...
随机推荐
- Linux Yum仓库源配置
Yum概念:Yum软件仓库的作用是为了进一步简化RPM管理软件的难度以及自动分析所需软件包及其依赖关系的技术 Yum配置仓库源放置位置:/etc/yum.repo.d/ :配置文件需以 .repo 结 ...
- 学习DNS(二)
DNS出现及演化 网络出现的早期 是使用IP地址通讯的,那时就几台主机通讯.但是随着接入网络主机的增多,这种数字标识的地址非常不便于记忆,UNIX上就出现了建立一个叫做hosts的文件(Linux和w ...
- 学习saltstack (六)
Slatstack 介绍 官网:https://saltstack.com/ 官方源:http://repo.saltstack.com/ (介绍各操作系统安装方法) centos 6源 ? 1 y ...
- 学习HTML5 history API
html5 在 history 对象上添加几个新的方法.事件.属性,用以增强开发者对于浏览器历史记录的控制.大体上说,新的API可以帮助我们在无刷新的情况下改变浏览器的url,新增或者替换之前的历史记 ...
- devicePixelRatio 那些事儿
devicePixelRatio 那些事儿 设备像素比 window.devicePixelRatio 是设备上物理像素和设备独立像素的比例,即公式表示为:window.devicePixelRati ...
- 微信小程序:自定义组件的数据传递
一.前言 如果小程序中有可复用的UI且具有一定的功能性,就可以使用自定义组件将其封装起来.下面介绍一个简单的组件和一个复杂的组件. 二.简单的组件(计数器) 1. 组件功能介绍 这个组件常见于外卖软件 ...
- Java---变量和基本数据类型
变量 在Java中,变量分为两种:基本类型的变量和引用类型的变量. 在Java中变量必须先定义后使用,在定义变量的时候可以给它一个初始值.如果不写初始值,默认为0或空. 变量的一个重要特点是可以重新赋 ...
- Spring-Bean标签属性scope范围
scope:指对象的作用范围,取值如下 1.singleton:默认值,单例的 2.prototype:多例的 3.request:WEB项目,Spring创建一个Bean的对象,把对象存入到requ ...
- kubectl creat -f 创建pod时出错
如果创建yaml时候,sts中已经存在,但是get pod又查不到已经启动的pod可以这样 [root@k3master src]# kubectl get pod //查不到eureka NAME ...
- 10. MySQL基础-02条件查询、排序查询
2. 条件查询 语法 select 查询列表 from 表名 where 筛选条件: 分类 按条件表达式筛选 简单的条件运算符:> < = != <> >= ⇐ 按逻 ...