文章目录
- 背景
- 介绍
- 项目实操
- 如果想要自己尝试,使用Apipost工具,调用接口测试即可
- mysql类型
如果感觉有点意思点个关注,一键三连吧!蟹蟹!!!
背景
想要清晰的了解到,使用longtext类型,保存富文本数据到mysql数据库是否够用,又是如何够用的。网上搜了很久没有想要的答案,自己尝试了一下,虽然没有到极限,但是完全够用。
longtest类型,对应java和mybatis框架类型为string。
介绍
mysql5.0版本以前,longtext可以储存127个文字。5.0以上版本longtext可以储存32767个文字,utf8编码下最多支持10921个字符(不为空)。
mysql5.0版本以前,longtext最大能定义255字节长度。5.0以上版本支持65535字节长度,utf8编码下最多支持21843个字符(不为空)。
因为一个文字占用两个字节,因此mysql5.0版本以前,longtext可以储存127个文字。5.0以上版本longtext可以储存32767个文字,utf8编码下最多支持10921个字符(不为空)。
扩展资料:
longtext使用比固定长度类型(text)占用更大的存储空间(除了使用ROW_FORMAT=FIXED创建的MyISAM表)。节约空间,所以性能会有帮助。在更新的时候会产生额外的工作。
5.0以上版本,longtext取值或设置值都会保存字符串末尾的空格,4.1之前的版本longtext都会把字符串末尾的空格删除掉。最大长度远大于平均长度,很少发生更新的时候适合使用longtext,因为碎片更少了。
简单了解下
varchar为变长字节,所占空间为字符串实际长度加1,最长为65535个字节
而longtext也是变长字符存储,只保存字符数据,最长为4294967295字节,比较适合存储大内容
换句话来说(理想状态下):
4294967295除以3得到,1431655765个汉字,14亿多。
项目实操
你可以随意创建一个表,id,content两个字段,也可以按照我的表创建。
你可能遇见的问题,比如主键自增不是按照自己想要,可以看这一篇博客:idea中mybatisPlus自增主键失效
创建表
DROP TABLE IF EXISTS `duck_message`;
CREATE TABLE `duck_message` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`message_title` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '标题',
`message_content` longtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '内容',
`message_images` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '图片地址',
`status` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '状态(L-留言榜,P-排行榜,T-推荐榜)',
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
`creation_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
`user_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户id',
`type_push` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '是否上榜(Y-上榜,N-不上榜)',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '鸭友榜表' ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS = 1;
注意:longtext不必设置长度
代码很简单,就是个插入语句而已:创建一个Springboot项目,使用mybatis-plus自动生成。然后插入表数据即可。
如何自动生成,可以看下这篇博客:mybatisPlus自动生成代码
我使用富文本进行调用的,可以参考博客:summernote富文本使用。也可以使用apipost进行测试,下面有介绍。
完整代码
getInputValue() {
var that = this;
// 获取summernote输入的值的方法 $('#summernote2').summernote('code')
that.contant = $("#summernote2").summernote("code");
console.log(that.contant);
that.axios({
url: "http://localhost:8081/duckMessage/text",
method: "POST",
data: that.contant,
headers: {
// "Content-Type": "application/x-www-form-urlencoded",
"Content-Type": "text/plain",
},
success: function (data) {
console.log("返回的数据" + data.data);
},
});
},
//Controller层
//测试,可以插入最大插入数据
@PostMapping("/text")
public Result textInsert(@RequestBody String contant){
System.out.println("值:"+contant);
int num= duckMessageService.textInsert(contant);
return new Result("200",num,"成功");
}
//serveceimp层
@Override
public int textInsert(String contant) {
DuckMessage duckMessage = new DuckMessage().setMessageContent(contant).setCreationTime(new Date());
int num = duckMessageMapper.insert(duckMessage);
return num;
}
接近78万个字
我是用的Summernote富文本进行尝试调用的,文件显示2.3M(也可以直接使用Apipost调用)
后台打印的日志
表数据
我准备再翻一番,但是复制粘贴,显示速度太慢。不再尝试。
如果想要自己尝试,使用Apipost工具,调用接口测试即可
官方下载地址:https://www.apipost.cn/
注意:必须下载客户端才能在本地调试,网页端只支持非本地接口
表数据
mysql类型
数字类型
辨別Null与Not Null :Null为允许储存空值(Null)
数值
日期时间
如果感觉有用点个关注,一键三连吧!蟹蟹!!!
各位看官》创作不易,点个赞!!!
诸君共勉:万事开头难,只愿肯放弃。
免责声明:本文章仅用于学习参考