软件编程
位置:首页>> 软件编程>> java编程>> Mybatis在sqlite中无法读写byte[]类问题的解决办法

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

作者:icyfox_bupt  发布时间:2021-08-06 21:06:07 

标签: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[]了

来源:https://blog.csdn.net/icyfox_bupt/article/details/108867782

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com