解决Mybatis在sqlite中无法读写byte[]类的问题

微信扫一扫,分享到朋友圈

解决Mybatis在sqlite中无法读写byte[]类的问题

开发环境: springboot + mybatis plus

场景:在DAO的bean中有byte[]类时,写入可以成功,但是读取不行。从错误栈中可以看到原因是:sqlite的driver中, JDBC4ResultSet
没有实现以下接口:

public Blob getBlob(int col)
throws SQLException { throw unused(); }
public Blob getBlob(String col)
throws SQLException { throw unused(); }

读写 byte[]
在JDBC规范中有3种接口:

InputStream getBinaryStream(int col)
byte[] getBytes(int col)
Blob getBlob(int col)

Mybatis Plus默认会选择第3个接口。因此,这里只需要将处理方法切换到前两个接口即可:方法就是更换一个 TypeHandler

直接上代码:

@Data
@TableName(autoResultMap = true)
public class Member {

@TableId
private String personId;
private String name;
private String telephone;
@TableField(typeHandler = ByteArrayTypeHandler.class)
private byte[] img;
private String ext;
private Integer type;
private Integer ts;
}

关键点:

@TableName(autoResultMap = true)
@TableField(typeHandler = ByteArrayTypeHandler.class)

之后就可以正常读写 byte[]

微信扫一扫,分享到朋友圈

解决Mybatis在sqlite中无法读写byte[]类的问题

RTX3080“翻车” NVIDIA终于正式回应:新驱动已做优化、与电容无关

上一篇

2019年9月21日-2020年9月19日美国每周初请失业金人数情况

下一篇

你也可能喜欢

解决Mybatis在sqlite中无法读写byte[]类的问题

长按储存图像,分享给朋友