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[]类问题的文章就介绍到这了,更多相关Mybatis在sqlite无法读写byte[]类内容请搜索好吧啦网以前的文章或继续浏览下面的相关文章希望大家以后多多支持好吧啦网!
相关文章:
1. MySQL收归Oracle 开源数据库或将很受伤2. Mybatis数据批量插入如何实现3. Oracle向Apache基金会捐赠ADF项目4. Sql Server下数据库链接的使用方法5. 解决mybatis使用foreach批量insert异常的问题6. Aqua Data Studio 4.7 发布- Oracle DBA 工具7. Mybatis查询方法如何实现没有返回值8. 在sqlserver2005中安装sql server 2000的示例数据库northwind9. 基于mybatis batch实现批量提交大量数据10. SQL Server Express 数据库自动部署问题及解决