溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Mybatis在sqlite中無法讀寫byte[]類問題的解決辦法

發(fā)布時(shí)間:2020-10-15 16:07:01 來源:腳本之家 閱讀:157 作者:icyfox_bupt 欄目:開發(fā)技術(shù)

開發(fā)環(huán)境: springboot + mybatis plus

場景:在DAO的bean中有byte[]類時(shí),寫入可以成功,但是讀取不行。從錯(cuò)誤棧中可以看到原因是:sqlite的driver中,JDBC4ResultSet沒有實(shí)現(xiàn)以下接口:

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

讀寫byte[]在JDBC規(guī)范中有3種接口:

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

Mybatis Plus默認(rèn)會(huì)選擇第3個(gè)接口。因此,這里只需要將處理方法切換到前兩個(gè)接口即可:方法就是更換一個(gè)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;
}

關(guān)鍵點(diǎn):

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

之后就可以正常讀寫byte[]了

總結(jié)

到此這篇關(guān)于Mybatis在sqlite中無法讀寫byte[]類問題的文章就介紹到這了,更多相關(guān)Mybatis在sqlite無法讀寫byte[]類內(nèi)容請搜索億速云以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持億速云!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI