该基本测试案列使用的是:springboot、mybatis-plus

主要测试的是向数据中写入如.pdf、.yml、.jpg、.mp3等等类型的二进制文件,当然,像字符串这种编码固定的也是可以写入的,不是说数据库中Blob类型的字段不能写入字符串。

MySQL table: tb_blob

javaBean:TbBlob.class

package xyz.jxust.mp_quickstart.bean;import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;@TableName(value = "tb_blob")
@Data
public class TbBlob {@TableId(value = "id")private Integer id;@TableField(value = "name")private String name;@TableField("bin_data")private byte[] binData;//数据库的字段为blob、mediumblob、longblob,pojo的属性应为byte数组 byte[]
}

Mapper接口:TbBlobMapper.class

package xyz.jxust.mp_quickstart.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import xyz.jxust.mp_quickstart.bean.TbBlob;
@Mapper
public interface TbBlobMapper extends BaseMapper<TbBlob> {}

TbBlobMapper测试方法

1.测试方法testInsertTbBlob 向MySQL数据库插入一行记录,主要是通过文件输入流将源文件的二进制数据写入
到数据库中存储。

2.测试方法testSelectTbBlobById 从数据库通过 id 字段查询一条记录,并将记录的二进制数据通过文件输出流写到项目的src目录下。

关于java的输入输出流:
程序能够从中读取(read)数据的地方定义为输入流;程序能够往其中写入(write)数据的地方定义为输出流。

/*==================================TbBlobMapper tests begin======================================================*/@AutowiredTbBlobMapper tbBlobMapper;@Testpublic void testInsertTbBlob() throws IOException {File file = new File("G:\\我的简历\\pdf\\耿忠相--Java研发岗.pdf");FileInputStream fis = new FileInputStream(file);System.out.println("bytes of file: "+fis.available());byte[] data=new byte[fis.available()];fis.read(data,0,fis.available());fis.close();TbBlob tbBlob = new TbBlob();tbBlob.setId(8);tbBlob.setName(file.getName());tbBlob.setBinData(data);int insert = tbBlobMapper.insert(tbBlob);System.out.println(insert);}@Testpublic void testSelectTbBlobById() throws SQLException, IOException {TbBlob tbBlob = tbBlobMapper.selectById(8);if (tbBlob!=null){System.out.println("number of bytes: "+tbBlob.getBinData().length);FileOutputStream fos = new FileOutputStream("src/"+tbBlob.getName());fos.write(tbBlob.getBinData(),0,tbBlob.getBinData().length);fos.close();}}/*==================================TbBlobMapper tests end========================================================*/

注:
我修改测试方法试了几次插入,遇到一些问题
主要是一开始表的bin_data字段被定义为Blob类型的,Blob类型的最大只能存放65535 bytes 的数据,如果要存放再大一些的文件到数据库中,比如小于等于16 M 的,可以将字段声明为MediumBlob类型的,更大的就是LongBlob了,最大能存放4 G的数据。

几次测试后tb_blob表的情况

尤其注意:

1.可能会遇到packet too large 的异常,只需要修改 MySQL配置文件 my.ini,如果有 max_allowed_packet配置项,修改其值即可,单位可以用M,比如max_allowed_packet=30M;如果没有此配置项,直接在配置文件末尾添加此配置项即可。

2.重要的事说三遍!!!
数据库的字段为blob、mediumblob、longblob,pojo的属性应为byte数组 byte[]!!!
数据库的字段为blob、mediumblob、longblob,pojo的属性应为byte数组 byte[]!!!
数据库的字段为blob、mediumblob、longblob,pojo的属性应为byte数组 byte[]!!!

这个测试只是能够运行不报错,完成基本的任务,还有很多需要改进的地方,希望精通 mybatis-plus 的 ‘C友’ 提出改进的宝贵意见。

mybatis-plus:向MySQL数据库写入二进制大数据相关推荐

  1. MySQL数据库如何解决大数据量存储问题

    FROM http://blog.csdn.net/likika2012/article/details/38816037 各位高手您们好,我最近接手公司里一个比较棘手的问题,关于如何利用MySQL存 ...

  2. saltstack 管理mysql_saltstack自动化运维系列④之saltstack的命令返回结果mysql数据库写入...

    saltstack自动化运维系列④之saltstack的命令返回结果mysql数据库写入 salt的返回值写入mysql数据库: 可参考: https://docs.saltstack.com/en/ ...

  3. mysql数据库搬家,MySQL数据库迁移上云-数据搬家不用愁

    MySQL数据库迁移上云 数据搬"家"不用愁 随着数字化时代的发展,越来越多的企业开始数字化转型.云上数据库能提升对数据库的使用及管理效率,给企业带来了很大经济效益.那么如何安全有 ...

  4. mysql java datetime_Java向mysql数据库插入datetime类型数据实例(精)

    在Mysql数据库中日期跟时间有两种: 1.date类型,date类型也就是我们常见的储存yyyy-MM-dd类型的日期,它不能储存时间,也就是只能储存日期, 2.dateitme就是可以储存日期同时 ...

  5. php导出数据库的指定表数据,MYSQL教程mysql数据库导出指定表数据的方法

    <MYSQL教程mysql数据库导出指定表数据的方法>要点: 本文介绍了MYSQL教程mysql数据库导出指定表数据的方法,希望对您有用.如果有疑问,可以联系我们. 导读:linux下导出 ...

  6. python亿级mysql数据库导出_Python实现将MySQL数据库表中的数据导出生成csv格式文件的方法...

    本文实例讲述了python实现将MySQL数据库表中的数据导出生成csv格式文件的方法.分享给大家供大家参考,具体如下: #!/usr/bin/env python # -*- coding:utf- ...

  7. 数据库开发转行大数据开发工程师怎么样?

    数据库开发转行大数据开发工程师怎么样?大数据的方向的工作有大数据运维工程师.大数据开发工程师.数据分析.数据挖掘.架构师等.有工作经验想转行大数据开发主要考察基础.学习能力.解决问题的能力.想转转行大 ...

  8. MySQL数据库C接口的数据查询操作示例

    MySQL数据库C接口的数据查询操作示例 命令行操作 (1)建库建表(已有则不用) 连接MySQL服务器,并登录之.选择某个数据库.假设用户在这个数据库下已有一个表了. (2)查询所有数据的方法 SE ...

  9. mysql数据库删除重复的数据只保留一条

    问题引入 假设一个场景,一张用户表,包含 3 个字段:id,identity_id,name. 现在身份证号 identity_id 和姓名 name 有很多重复的数据,需要删除多余数据只保留一条有效 ...

最新文章

  1. (转)start_kernel 代码分析
  2. c语言大力士编程,C语言 编程
  3. 卸载注册表_系统小技巧:软件卸载不了?这里办法多
  4. Linux——curl(转)
  5. PS制作加载GIF图片教程
  6. VMWARE 之 分布式网络交换机
  7. android rxbus封装,Android RxBus的使用
  8. 【一】从.WAV文件中提取语音的fbank特征
  9. Python2与Python3的区别(二):raw_input与input
  10. MBP本,完美多分区装双系统图文教程,多分区而不影响苹果系统GUID分区表,图文教程
  11. 【转帖】map,set,list,等JAVA中集合解析 - Java - cjw的资料
  12. 用选择法或冒泡法对输入的50个字符(按照ASII码由小到大)进行排序
  13. 【操作系统二】图解TCP/IP模型+实战
  14. MyBatis:快速入门代码实例(maven代码版)
  15. 金融python入门书籍_零基础想系统地学习金融学、量化投资、数据分析、python,需要哪些课程、书籍?有哪些证书可以考?...
  16. SCPI 可编程仪器标准命令
  17. mysql计算均线_MySQL移动平均线 – 4周
  18. mysql怎么判断是否断号_怎么判断孩子是否患上多动症?
  19. Android iOS设计尺寸规范
  20. linux gcc 6源码安装教程,CentOS 6.5下源码安装GCC-4.8.2安装笔记整理

热门文章

  1. 【爬虫】从B站或央视网爬取视频下载链接
  2. tensorflow损失函数均方误差怎么计算
  3. 模态分析-自由模态分析02
  4. 计算机二级c语言程序设计题型,计算机二级C语言题型和评分标准
  5. Vue锚链接(两种方法) scrollIntoView
  6. EPA的藻类预警App
  7. 【Codeforces 1349A】Orac and LCM
  8. ip rule 和 ip route
  9. SPAD传感器没有输出的可能原因
  10. 如何规避企业财务风险