亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

mysql中blob類型亂碼怎么辦

發布時間:2020-06-30 13:46:44 來源:億速云 閱讀:366 作者:清晨 欄目:編程語言

不懂mysql中blob類型亂碼怎么辦?其實想解決這個問題也不難,下面讓小編帶著大家一起學習怎么去解決,希望大家閱讀完這篇文章后大所收獲。

場景:數據庫為mysql該字段的類型blob。

在從數據庫讀取時是保存內容全部為亂碼,最后在網上找到一種好的解決方法。

可以在讀出內容后自己寫代碼去轉換

1、寫一個轉換類,在指定結果類型時給需要轉換的字段指定裝換類(PS:持久層使用了mybatis)

import java.io.ByteArrayInputStream;
import java.io.UnsupportedEncodingException;
import java.sql.Blob;
import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType;
public class MyBlobTypeHandler extends BaseTypeHandler<String> {  
    //###指定字符集  
    private static final String DEFAULT_CHARSET = "utf-8";  
    public void setNonNullParameter(PreparedStatement ps, int i,  
            String parameter, JdbcType jdbcType) throws SQLException {  
        ByteArrayInputStream bis;  
        try {  
            //###把String轉化成byte流  
            bis = new ByteArrayInputStream(parameter.getBytes(DEFAULT_CHARSET));  
        } catch (UnsupportedEncodingException e) {  
            throw new RuntimeException("Blob Encoding Error!");  
        }     
        ps.setBinaryStream(i, bis, parameter.length());  
    }  
    @Override  
    public String getNullableResult(ResultSet rs, String columnName)  
            throws SQLException {  
        Blob blob = (Blob) rs.getBlob(columnName);  
        byte[] returnValue = null;  
        if (null != blob) {  
            returnValue = blob.getBytes(1, (int) blob.length());  
        }  
        try {  
            //###把byte轉化成string  
            return new String(returnValue, DEFAULT_CHARSET);  
        } catch (UnsupportedEncodingException e) {  
            throw new RuntimeException("Blob Encoding Error!");  
        }  
    }  
    public String getNullableResult(CallableStatement cs, int columnIndex)  
            throws SQLException {  
        Blob blob = (Blob) cs.getBlob(columnIndex);  
        byte[] returnValue = null;  
        if (null != blob) {  
            returnValue = blob.getBytes(1, (int) blob.length());  
        }  
        try {  
            return new String(returnValue, DEFAULT_CHARSET);  
        } catch (UnsupportedEncodingException e) {  
            throw new RuntimeException("Blob Encoding Error!");  
        }  
    }
    @Override
    public String getNullableResult(ResultSet rs, int columnIndex)
            throws SQLException {
        // TODO Auto-generated method stub
        return null;
    }
}

2、在mybatis配置文件中指定

<result column="settlementContent" property="settlementContent" typeHandler="cn.xxx.utils.MyBlobTypeHandler"/>

感謝你能夠認真閱讀完這篇文章,希望小編分享mysql中blob類型亂碼怎么辦內容對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,遇到問題就找億速云,詳細的解決方法等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阿坝县| 綦江县| 丹东市| 巴林左旗| 潞城市| 临猗县| 绍兴县| 平泉县| 巩留县| 慈利县| 金溪县| 吐鲁番市| 东平县| 姜堰市| 道孚县| 江城| 金门县| 绥德县| 连云港市| 习水县| 四平市| 沾化县| 绵竹市| 神木县| 桃园市| 阜新市| 武安市| 方正县| 永胜县| 二手房| 曲阜市| 阳原县| 景泰县| 宜城市| 德清县| 南靖县| 育儿| 开远市| 翁源县| 辽源市| 蓬安县|