校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > 深入淺析mybatis oracle BLOB類型字段保存與讀取

深入淺析mybatis oracle BLOB類型字段保存與讀取

熱門標簽:慧營銷crm外呼系統丹丹 地圖標注養老院 哪個400外呼系統好 愛客外呼系統怎么樣 開發外呼系統 百度地圖標注途經點 哈爾濱電話機器人銷售招聘 山東crm外呼系統軟件 圖吧網站地圖標注

一、BLOB字段

  BLOB是指二進制大對象也就是英文Binary Large Object的所寫,而CLOB是指大字符對象也就是英文Character Large Object的所寫。其中BLOB是用來存儲大量二進制數據的;CLOB用來存儲大量文本數據。BLOB通常用來保存圖片、文件等二進制類型的數據。

二、使用mybatis操作blob

  1、表結構如下:

create table BLOB_FIELD
(
  ID          VARCHAR2(64 BYTE)  not null,
  TAB_NAME       VARCHAR2(64 BYTE)  not null,
  TAB_PKID_VALUE    VARCHAR2(64 BYTE)  not null,
  CLOB_COL_NAME    VARCHAR2(64 BYTE)  not null,
  CLOB_COL_VALUE    CLOB,
  constraint PK_BLOB_FIELD primary key (ID)
);

  2、實體代碼如下:

 package com.test.entity;
 import java.sql.Clob; 
 /**
  * 大字段 
  */
 public class BlobField { 
   private String tabName;// 表名
   private String tabPkidValue;// 主鍵值
   private String blobColName;// 列名
   private byte[] blobColValue;// 列值 clob類型
   public String getTabName() {
     return tabName;
   }
   public void setTabName(String tabName) {
     this.tabName = tabName;
   }
   public String getTabPkidValue() {
     return tabPkidValue;
   }
   public void setTabPkidValue(String tabPkidValue) {
     this.tabPkidValue = tabPkidValue;
   }
   public String getBlobColName() {
     return blobColName;
   }
   public void setBlobColName(String blobColName) {
     this.blobColName = blobColName;
   }
   public byte[] getBlobColValue() {
     return blobColValue;
   }
   public void setBlobColValue(byte[] blobColValue) {
     this.blobColValue = blobColValue;
   }
 }

  3、mybatis sql代碼如下:

 ?xml version="." encoding="UTF-" ?>
 !DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper .//EN" "http://mybatis.org/dtd/mybatis--mapper.dtd">
 mapper namespace="com.test.dao.BlobFieldDao">
   sql id="blobFieldColumns">
     a.ID AS id,
     a.TAB_NAME AS tabName,
     a.TAB_PKID_VALUE AS tabPkidValue,
     a.BLOB_COL_NAME AS blobColName,
     a.BLOB_COL_VALUE AS blobColValue
   /sql>
   sql id="blobFieldJoins">
   /sql>
   select id="get" resultType="blobField">
     SELECT
     include refid="blobFieldColumns" />
     FROM BLOB_FIELD a
     include refid="blobFieldJoins" />
     WHERE a.ID = #{id}
   /select>
   select id="findList" resultType="blobField">
     SELECT
     include refid="blobFieldColumns" />
     FROM BLOB_FIELD a
     include refid="blobFieldJoins" />
   /select> 
   insert id="insert">
     INSERT INTO BLOB_FIELD(
     ID ,
     TAB_NAME ,
     TAB_PKID_VALUE ,
     BLOB_COL_NAME ,
     BLOB_COL_VALUE
     ) VALUES (
     #{id},
     #{tabName},
     #{tabPkidValue},
     #{blobColName},
     #{blobColValue,jdbcType=BLOB}
     )
   /insert>
   update id="update">
     UPDATE BLOB_FIELD SET
     TAB_NAME = #{tabName},
     TAB_PKID_VALUE = #{tabPkidValue},
     BLOB_COL_NAME = #{blobColName},
     BLOB_COL_VALUE = #{blobColValue}
     WHERE ID = #{id}
   /update>
   delete id="delete">
     DELETE FROM BLOB_FIELD 
     WHERE ID = #{id}
   /delete>
 /mapper>

  3、controller代碼如下:

  a、保存BLOB字段代碼

/**
    * 附件上傳
    * 
    * @param testId
    *      主表Id
    * @param request
    * @return
    * @throws UnsupportedEncodingException
    */
   @RequiresPermissions("exc:exceptioninfo:feedback")
   @RequestMapping(value = "attachment", method = RequestMethod.POST)
   @ResponseBody
   public MapString, Object> uploadAttachment(@RequestParam(value = "testId", required = true) String testId, 
 
 HttpServletRequest request)
       throws UnsupportedEncodingException {
     MapString, Object> result = new HashMapString, Object>();
 
     MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
     // 獲得文件
     MultipartFile multipartFile = multipartRequest.getFile("Filedata");// 與前端設置的fileDataName屬性值一致
     String filename = multipartFile.getOriginalFilename();// 文件名稱
     InputStream is = null;
     try {
       //讀取文件流
       is = multipartFile.getInputStream();
       byte[] bytes = FileCopyUtils.copyToByteArray(is);
       BlobField blobField = new BlobField();
       blobField.setTabName("testL");
       blobField.setTabPkidValue(testId);
       blobField.setBlobColName("attachment");
       blobField.setBlobColValue(bytes);
       //保存blob字段
       this.testService.save(blobField, testId, filename);
       result.put("flag", true);
       result.put("attachmentId", blobField.getId());
       result.put("attachmentName", filename);
     } catch (IOException e) {
       e.printStackTrace();
       result.put("flag", false);
     } finally {
       IOUtils.closeQuietly(is);
     }
     return result;
   }

  b、讀取BLOB字段

 /**
    * 下載附件
    * 
    * @param attachmentId
    * @return
    */
   @RequiresPermissions("exc:exceptioninfo:view")
   @RequestMapping(value = "download", method = RequestMethod.GET)
   public void download(@RequestParam(value = "attachmentId", required = true) String attachmentId,
       @RequestParam(value = "attachmentName", required = true) String attachmentName, HttpServletRequest 
 request, HttpServletResponse response) {
     ServletOutputStream out = null;
     try {
       response.reset();
       String userAgent = request.getHeader("User-Agent");
       byte[] bytes = userAgent.contains("MSIE") ? attachmentName.getBytes() : attachmentName.getBytes("UTF-
 "); // fileName.getBytes("UTF-")處理safari的亂碼問題
       String fileName = new String(bytes, "ISO--");
       // 設置輸出的格式
       response.setContentType("multipart/form-data");
       response.setHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode(attachmentName, 
 "UTF-"));
       BlobField blobField = this.blobFieldService.get(attachmentId);
       //獲取blob字段
       byte[] contents = blobField.getBlobColValue();
       out = response.getOutputStream();
       //寫到輸出流
       out.write(contents);
       out.flush();
     } catch (IOException e) {
       e.printStackTrace();
     }
   }        

  本例子將文件上傳并保存到BLOB類型字段字段,下載的時候讀取BLOB字段,并寫入成輸出流。

以上就是本文的全部敘述,希望對大家有所幫助。

您可能感興趣的文章:
  • SpringBoot Mybatis Plus公共字段自動填充功能
  • Mybatis動態調用表名和字段名的解決方法
  • MyBatis學習教程(四)-如何快速解決字段名與實體類屬性名不相同的沖突問題
  • MyBatis獲取插入記錄的自增長字段值(ID)
  • MyBatis入門之增刪改查+數據庫字段和實體字段不一致問題處理方法
  • mybatis自動填充時間字段示例代碼

標簽:固原 甘肅 武漢 承德 青島 周口 和田 開封

巨人網絡通訊聲明:本文標題《深入淺析mybatis oracle BLOB類型字段保存與讀取》,本文關鍵詞  深入,淺析,mybatis,oracle,BLOB,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《深入淺析mybatis oracle BLOB類型字段保存與讀取》相關的同類信息!
  • 本頁收集關于深入淺析mybatis oracle BLOB類型字段保存與讀取的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    在线视频你懂得一区| 在线观看免费一区| 色综合久久久久| 亚洲日本免费电影| 在线观看亚洲成人| 亚洲电影一级黄| 日韩一级精品视频在线观看| 免费观看在线综合色| 日韩精品一区二区三区四区视频| 久久成人麻豆午夜电影| 久久精品欧美一区二区三区麻豆| 成人av网站在线| 亚洲1区2区3区4区| 国产欧美日韩在线观看| 99这里只有久久精品视频| 伊人性伊人情综合网| 欧美一三区三区四区免费在线看 | 欧美国产精品劲爆| 91老师片黄在线观看| 奇米777欧美一区二区| 国产欧美日韩激情| 欧美一区二区视频观看视频| 成人自拍视频在线观看| 天堂一区二区在线| 国产精品久久久久久妇女6080| 777久久久精品| 97精品久久久久中文字幕 | 五月天丁香久久| 国产精品乱子久久久久| 精品理论电影在线| 日本久久精品电影| 丰满少妇久久久久久久| 蜜臀av性久久久久蜜臀aⅴ流畅| 国产精品不卡视频| 久久你懂得1024| 欧美大胆一级视频| 欧美日韩视频一区二区| 91欧美一区二区| 国产成人高清在线| 国产呦精品一区二区三区网站| 亚洲福利一区二区三区| 亚洲视频一区在线观看| 国产精品久久影院| 国产精品久久免费看| 久久先锋资源网| 精品免费视频一区二区| 91精品在线免费观看| 欧美曰成人黄网| 在线视频欧美区| 91国产福利在线| 日本韩国一区二区| 色拍拍在线精品视频8848| av电影在线观看一区| 波多野结衣在线一区| 首页国产欧美日韩丝袜| 国产精品国产三级国产aⅴ原创 | 欧美电影在线免费观看| 欧美无乱码久久久免费午夜一区| 91色porny在线视频| 色综合天天综合网国产成人综合天| 国产aⅴ综合色| 成人黄色大片在线观看| 不卡在线视频中文字幕| 色哟哟亚洲精品| 欧美三级电影网站| 欧美一区二区三区四区高清| 精品欧美一区二区在线观看| 久久久夜色精品亚洲| 中文字幕免费一区| 亚洲欧美偷拍三级| 香蕉成人啪国产精品视频综合网 | 欧美色涩在线第一页| 欧美影片第一页| 欧美日韩一区二区不卡| 欧美一级黄色录像| 国产亚洲短视频| 自拍av一区二区三区| 亚洲第一久久影院| 麻豆成人av在线| 日韩免费视频线观看| 色偷偷88欧美精品久久久| 久久99久国产精品黄毛片色诱| 视频一区中文字幕| 精品综合免费视频观看| 在线观看日韩毛片| 一区二区三区四区精品在线视频 | 91精品啪在线观看国产60岁| 国产日产亚洲精品系列| 成人激情文学综合网| 日韩一区二区免费在线观看| 国产精品99久久久久久久vr| 国产剧情一区在线| 国产精品电影一区二区| 国产精品一区在线观看乱码| 人人超碰91尤物精品国产| 国产又黄又大久久| 99精品欧美一区二区三区小说 | 91精品欧美福利在线观看| 精品国产伦一区二区三区观看方式| 国产午夜精品一区二区三区四区| 亚洲精品va在线观看| 久久精品国产久精国产爱| 色综合久久久久| 久久亚洲综合av| 亚洲最新在线观看| 国产一区二区视频在线| 欧美日韩在线播| 久久久亚洲国产美女国产盗摄 | 成人激情小说乱人伦| 51精品视频一区二区三区| 亚洲欧洲成人精品av97| 老司机精品视频线观看86| 91麻豆国产香蕉久久精品| 欧美美女bb生活片| 亚洲免费三区一区二区| 激情综合色综合久久| 欧美精品色一区二区三区| 国产精品第一页第二页第三页| 国内精品国产三级国产a久久| 91国偷自产一区二区开放时间| 国产精品素人一区二区| 国产剧情一区在线| 欧美一区二区三区影视| 一区二区三区精品视频在线| 国产69精品久久久久毛片| 欧美成人一区二区| 免费成人你懂的| 在线综合视频播放| 日韩电影在线免费| 91精品国产综合久久精品麻豆| 亚洲精品乱码久久久久久| 成人国产精品视频| 久久老女人爱爱| 国产精品一线二线三线精华| 欧美成人一区二区| 老司机精品视频线观看86| 欧美va在线播放| 黑人精品欧美一区二区蜜桃| 精品久久久久一区| 久久精品国产网站| 久久久午夜精品理论片中文字幕| 国产综合成人久久大片91| 2019国产精品| 国产精品一二三四五| 国产午夜精品一区二区三区四区| 国产成人免费高清| 亚洲欧洲日韩av| 色94色欧美sute亚洲线路一久| 亚洲精品中文字幕乱码三区| 欧美一a一片一级一片| 亚洲精品国产精品乱码不99| 91麻豆精东视频| 日本欧美韩国一区三区| 久久九九久精品国产免费直播| 国内精品伊人久久久久av一坑| 久久蜜桃一区二区| eeuss鲁片一区二区三区在线观看| 中文字幕av在线一区二区三区| 成人免费精品视频| 亚洲欧美精品午睡沙发| 在线视频中文字幕一区二区| 日韩高清不卡一区二区三区| 久久欧美中文字幕| 色国产综合视频| 精品影视av免费| 亚洲自拍偷拍综合| 日韩一区二区麻豆国产| 成人爽a毛片一区二区免费| 一区二区三区久久久| 欧美不卡一区二区| 91丨porny丨户外露出| 青青草国产成人av片免费| 国产精品欧美一级免费| 欧美性色黄大片| 懂色中文一区二区在线播放| 午夜精品视频一区| 国产区在线观看成人精品| 欧美日韩一区二区电影| 国产成人a级片| 亚洲福利视频三区| 日本一区二区免费在线观看视频| 欧美亚洲一区二区在线| 国产自产2019最新不卡| 日韩高清在线一区| 亚洲欧美一区二区三区国产精品 | 亚洲色图在线播放| 久久久久亚洲综合| 日韩精品一区二区在线| 91偷拍与自偷拍精品| 国产一本一道久久香蕉| 日韩国产精品久久久久久亚洲| 国产精品久久久久一区| 日韩一卡二卡三卡四卡| 97se亚洲国产综合自在线不卡| 蜜臀av国产精品久久久久| 亚洲视频电影在线| 国产精品久久久久久亚洲毛片 | 午夜精品免费在线观看| 亚洲色图在线视频| 中文字幕高清一区|