一、引用
1.1 varchar和blob的区别
但我们用varchar 255 来存储数据的时候,可能不够用,甚至使用text也不够,那这个时候就可以使用Blob类型
1.2 如何在navicat上面查看blob的数据
二、代码的使用
2.1 方法一:用String接受和存储(推荐,例子)
我们可以定义一个实体类,数据库中blob类型的字段在实体类中定义成String类型;
2.2 方法二:用byte[]接受和存储
我们可以定义一个实体类,数据库中blob类型的字段在实体类中定义成byte[] 类型;
java的byte[] 但是这样数据太长了,所以可以使用ByteBuffer 甚至可以用string类型去取出来
前端还是传递一个字符串过来,然后我们把字符串转换成byte[] 存储进ByteBuffer;
- 存储
String content = applyDto.getContent();
ByteBuffer buffer = ByteBuffer.wrap(content.getBytes());
applyBean.setContent(buffer);
- 取出
//取出来 ByteBuffer转换为字符串
String s = StandardCharsets.UTF_8.decode(buffer).toString();
System.out.println(s);
三、例子
直接使用字符串String来接受blob
我们定义一个contentvo,来作为存储和接受这个blob字段的数据
实体类的代码(mybatisplus)
JSONArray itemArray = new JSONArray();
for (MaterialDateZoneListItem totalItem : totalItems) {
JSONObject jsonObject = new JSONObject();
List<Long> materialprogram = totalItem.getMaterialprogram();
jsonObject.put("startDate", totalItem.getStartdate());
jsonObject.put("endDate", totalItem.getEnddate());
jsonObject.put("mediaList", totalItem.getMd());
jsonObject.put("gcdNumber", totalItem.getGCDnumber());
jsonObject.put("idsSize", materialprogram.size());
jsonObject.put("ids", materialprogram);
itemArray.add(jsonObject);
}
Item item = new Item();
item.setUuid(uuid);
item.setMode(1);
item.setRemark(remark);
item.setCreateBy(userId);
item.setCreateTime(now);
item.setContent(itemArray.toJSONString());
itemMapper.insert(item);
Item item1 = itemMapper.selectList(null).get(2);
String content1 = item1.getContent();
List<ItemContentVo> itemContentVos1 = JSONArray.parseArray(content1, ItemContentVo.class);
System.out.println();