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

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

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

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

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

二.Blob類型介紹

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

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

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

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

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

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

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

四.上存取java代碼

1.建表

2.建實(shí)體類

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

3.用個(gè)自己寫的工具類

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

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

相關(guān)文章

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

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

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

    mybatis-plus批量更新updateBatchById問題

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

    在Java與Kotlin之間如何進(jìn)行互操作詳解

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

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

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

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

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

    Resttemplate中設(shè)置超時(shí)時(shí)長(zhǎng)方式

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

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

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

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

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

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

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

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

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

最新評(píng)論

双江| 云林县| 伊金霍洛旗| 宜兴市| 湘西| 龙江县| 丽江市| 绥芬河市| 甘南县| 诸暨市| 高阳县| 张家口市| 华蓥市| 三原县| 石楼县| 蒲城县| 罗源县| 宁化县| 同仁县| 平南县| 侯马市| 剑河县| 铁岭市| 渝北区| 南平市| 靖远县| 峨眉山市| 武冈市| 呼伦贝尔市| 杭锦后旗| 道孚县| 肃宁县| 兴义市| 英超| 平塘县| 轮台县| 黑山县| 龙海市| 陆河县| 康平县| 柘荣县|