最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java代碼如何實現(xiàn)存取數(shù)據(jù)庫的blob字段

 更新時間:2025年04月22日 08:39:25   作者:火冠蜂鳥  
這篇文章主要介紹了java代碼如何實現(xiàn)存取數(shù)據(jù)庫的blob字段問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

一.業(yè)務(wù)

在業(yè)務(wù)中我們被要求將文件或圖片等轉(zhuǎn)成 byte[]InputStream存到數(shù)據(jù)庫的Blob類型的字段中.

二.Blob類型介紹

在 MySQL 中,Blob 數(shù)據(jù)類型用于存儲二進制數(shù)據(jù)。MySQL 提供了四種不同的 Blob 類型:

  • TINYBLOB: 最大存儲長度為 255 個字節(jié)。
  • BLOB: 最大存儲長度為 65,535 個字節(jié)。
  • MEDIUMBLOB: 最大存儲長度為 16,777,215 個字節(jié)。
  • LONGBLOB: 最大存儲長度為 4,294,967,295 個字節(jié)。

三. Blob 對應(yīng)的 Java 類型

在 Java 中讀取 MySQL Blob 類型時,通常使用 java.sql.Blob 類型。java.sql.Blob 是一個接口,它提供了一些方法來操作 Blob 數(shù)據(jù)。

根據(jù) MySQL Blob 類型的不同,我們可以使用不同的 Java 類型來存儲 Blob 數(shù)據(jù)。

  • TINYBLOB 對應(yīng) byte[]InputStream。
  • BLOB 對應(yīng) byte[]InputStream
  • MEDIUMBLOB 對應(yīng) byte[]InputStream。
  • LONGBLOB 對應(yīng) byte[]InputStream。

我們可以根據(jù)需要選擇合適的 Java 類型。推薦用InputStream,這樣代碼不用轉(zhuǎn)換來轉(zhuǎn)換去,比較簡單

四.上存取java代碼

1.建表

2.建實體類

@Data
public class TTT {
    private String id;
    private String name;
    private  String createTime;
    private byte[] miaoshuByte;
    private InputStream miaoshuInputstream;
}

3.用個自己寫的工具類

public class FileUtil {
    /**
     * file轉(zhuǎn)byte
     */
    public static byte[] file2byte(File file) throws IOException {
        FileInputStream fis = null;
        ByteArrayOutputStream bos = null;
        try {
            fis = new FileInputStream(file);
            bos = new ByteArrayOutputStream();
            IOUtils.copy(fis, bos);
            byte[] bytes = bos.toByteArray();
            return bytes;
        }finally {
            if (fis != null) {
                fis.close();
            }
            if (bos != null) {
                bos.close();
            }
        }
    }
 
    /**
     * byte 轉(zhuǎn)file
     */
    public static File byte2File(byte[] buf,String fileName) throws IOException {
        FileOutputStream fos = null;
        try {
            fos = new FileOutputStream(fileName);
            fos.write(buf);
            File file = new File(fileName);
            return file;
        } finally {
            if (fos != null) {
                fos.close();
            }
        }
    }
} 

4.訪問接口

@RestController
@RequestMapping("order/")
@Slf4j
public class SendHttpWController {
    @Autowired
    private UtimeeMapper utimeeMapper;

    @GetMapping("/aa")
    public String queryById( Integer id) throws IOException {
        TTT ttt = new TTT();
        ttt.setId("30");
        ttt.setName("張三");
        File file = new File("F:\\Desktop\\aa.docx");
        byte[] bytes = FileUtil.file2byte(file);
        ttt.setMiaoshuByte(bytes);
        FileInputStream fileInputStream = new FileInputStream(file);
        ttt.setMiaoshuInputstream(fileInputStream);
        utimeeMapper.insert01(ttt);
        return "嘿嘿額黑8082";
    }
    @GetMapping("/bb")
    public String bb( Integer id) throws IOException {
        TTT ttt = utimeeMapper.select01("30");
        byte[] bytes = ttt.getMiaoshuByte();
        FileUtil.byte2File(bytes,"F:\\Desktop\\cc.docx");
        InputStream inputStream = ttt.getMiaoshuInputstream();
        FileOutputStream outputStream = new FileOutputStream("F:\\Desktop\\dd.docx");
        IOUtils.copy(inputStream, outputStream);//記得添加關(guān)流代碼(本代碼省略了)
        return "嘿嘿額黑8082";
    }

5.輸出成果

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 關(guān)于在IDEA中SpringBoot項目中activiti工作流的使用詳解

    關(guān)于在IDEA中SpringBoot項目中activiti工作流的使用詳解

    這篇文章主要介紹了關(guān)于在IDEA中SpringBoot項目中activiti工作流的使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • mybatis-plus批量更新updateBatchById問題

    mybatis-plus批量更新updateBatchById問題

    這篇文章主要介紹了mybatis-plus批量更新updateBatchById問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • 在Java與Kotlin之間如何進行互操作詳解

    在Java與Kotlin之間如何進行互操作詳解

    這篇文章主要給大家介紹了關(guān)于在Java和Kotlin之間如何進行互操作的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • java日期格式化YYYY-MM-dd遇坑指南小結(jié)

    java日期格式化YYYY-MM-dd遇坑指南小結(jié)

    本文主要介紹了java日期格式化YYYY-MM-dd遇坑指南小結(jié),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • 使用RedisAtomicLong優(yōu)化性能問題

    使用RedisAtomicLong優(yōu)化性能問題

    這篇文章主要介紹了使用RedisAtomicLong優(yōu)化性能問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Resttemplate中設(shè)置超時時長方式

    Resttemplate中設(shè)置超時時長方式

    這篇文章主要介紹了Resttemplate中設(shè)置超時時長方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • 深入分析Spring BeanDefinition的構(gòu)造元信息

    深入分析Spring BeanDefinition的構(gòu)造元信息

    Bean Definition是一個包含Bean元數(shù)據(jù)的對象,它描述了如何創(chuàng)建Bean實例、Bean屬性的值以及Bean之間的依賴關(guān)系,本文將帶大家深入分析Spring BeanDefinition的構(gòu)造元信息,需要的朋友可以參考下
    2024-01-01
  • Java?Stream?中的sorted?方法實現(xiàn)自定義排序全面解析(推薦)

    Java?Stream?中的sorted?方法實現(xiàn)自定義排序全面解析(推薦)

    Java?Stream?API中的sorted()方法是一個強大的中間操作,它允許我們對流中的元素進行排序,本文將深入探討如何使用sorted()方法實現(xiàn)自定義排序,涵蓋各種常見場景和高級技巧,感興趣的朋友一起看看吧
    2025-11-11
  • Java中將base64編碼字符串轉(zhuǎn)換為圖片的代碼

    Java中將base64編碼字符串轉(zhuǎn)換為圖片的代碼

    這篇文章主要介紹了Java中將base64編碼字符串轉(zhuǎn)換為圖片,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03
  • mybatis教程之動態(tài)sql語句_動力節(jié)點Java學(xué)院整理

    mybatis教程之動態(tài)sql語句_動力節(jié)點Java學(xué)院整理

    這篇文章主要介紹了mybatis教程之動態(tài)sql語句,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09

最新評論

堆龙德庆县| 青冈县| 都昌县| 荃湾区| 安新县| 大化| 抚远县| 建瓯市| 长治县| 安龙县| 巫溪县| 无锡市| 宜良县| 新郑市| 遵义县| 襄城县| 卫辉市| 通海县| 岳池县| 龙井市| 剑河县| 岑溪市| 舟曲县| 华亭县| 武义县| 客服| 鄂温| 徐闻县| 老河口市| 长兴县| 娱乐| 新龙县| 齐河县| 壶关县| 东丰县| 金门县| 咸丰县| 彭阳县| 安阳市| 揭东县| 西乌珠穆沁旗|