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

网友投稿 295 2022-11-18


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)NoOaTjP

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[]了

总结


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Maven生成及安装jar包到本地仓库的方法
下一篇:MyBatis中$和#的深入讲解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~