亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > Oracle > 正文

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

2024-08-29 13:58:29
字體:
來源:轉載
供稿:網友

本文給大家淺析mybatis oracle blob類型字段的保存與讀取,blob字段是指二進制大對象,用來存儲大量文本數據。感興趣的朋友一起學習吧

一、BLOB字段

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

二、使用mybatis操作blob

1、表結構如下:

 

 
  1. create table BLOB_FIELD 
  2. ID VARCHAR2(64 BYTE) not null
  3. TAB_NAME VARCHAR2(64 BYTE) not null
  4. TAB_PKID_VALUE VARCHAR2(64 BYTE) not null
  5. CLOB_COL_NAME VARCHAR2(64 BYTE) not null
  6. CLOB_COL_VALUE CLOB, 
  7. constraint PK_BLOB_FIELD primary key (ID) 
  8. ); 

2、實體代碼如下:

 

 
  1. package com.test.entity; 
  2. import java.sql.Clob;  
  3. /** 
  4. * 大字段  
  5. */ 
  6. public class BlobField {  
  7. private String tabName;// 表名 
  8. private String tabPkidValue;// 主鍵值 
  9. private String blobColName;// 列名 
  10. private byte[] blobColValue;// 列值 clob類型 
  11. public String getTabName() { 
  12. return tabName; 
  13. public void setTabName(String tabName) { 
  14. this.tabName = tabName; 
  15. public String getTabPkidValue() { 
  16. return tabPkidValue; 
  17. public void setTabPkidValue(String tabPkidValue) { 
  18. this.tabPkidValue = tabPkidValue; 
  19. public String getBlobColName() { 
  20. return blobColName; 
  21. public void setBlobColName(String blobColName) { 
  22. this.blobColName = blobColName; 
  23. public byte[] getBlobColValue() { 
  24. return blobColValue; 
  25. public void setBlobColValue(byte[] blobColValue) { 
  26. this.blobColValue = blobColValue; 

3、mybatis sql代碼如下:

 

 
  1. <?xml version="." encoding="UTF-" ?> 
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper .//EN" "http://mybatis.org/dtd/mybatis--mapper.dtd"
  3. <mapper namespace="com.test.dao.BlobFieldDao"
  4. <sql id="blobFieldColumns"
  5. a.ID AS id, 
  6. a.TAB_NAME AS tabName, 
  7. a.TAB_PKID_VALUE AS tabPkidValue, 
  8. a.BLOB_COL_NAME AS blobColName, 
  9. a.BLOB_COL_VALUE AS blobColValue 
  10. </sql> 
  11. <sql id="blobFieldJoins"
  12. </sql> 
  13. <select id="get" resultType="blobField"
  14. SELECT 
  15. <include refid="blobFieldColumns" /> 
  16. FROM BLOB_FIELD a 
  17. <include refid="blobFieldJoins" /> 
  18. WHERE a.ID = #{id} 
  19. </select> 
  20. <select id="findList" resultType="blobField"
  21. SELECT 
  22. <include refid="blobFieldColumns" /> 
  23. FROM BLOB_FIELD a 
  24. <include refid="blobFieldJoins" /> 
  25. </select>  
  26. <insert id="insert"
  27. INSERT INTO BLOB_FIELD( 
  28. ID , 
  29. TAB_NAME , 
  30. TAB_PKID_VALUE , 
  31. BLOB_COL_NAME , 
  32. BLOB_COL_VALUE 
  33. ) VALUES ( 
  34. #{id}, 
  35. #{tabName}, 
  36. #{tabPkidValue}, 
  37. #{blobColName}, 
  38. #{blobColValue,jdbcType=BLOB} 
  39. </insert> 
  40. <update id="update"
  41. UPDATE BLOB_FIELD SET 
  42. TAB_NAME = #{tabName}, 
  43. TAB_PKID_VALUE = #{tabPkidValue}, 
  44. BLOB_COL_NAME = #{blobColName}, 
  45. BLOB_COL_VALUE = #{blobColValue} 
  46. WHERE ID = #{id} 
  47. </update> 
  48. <delete id="delete"
  49. DELETE FROM BLOB_FIELD  
  50. WHERE ID = #{id} 
  51. </delete
  52. </mapper> 

3、controller代碼如下:

a、保存BLOB字段代碼

 

 
  1. /** 
  2. * 附件上傳 
  3.  
  4. * @param testId 
  5. * 主表Id 
  6. * @param request 
  7. * @return 
  8. * @throws UnsupportedEncodingException 
  9. */ 
  10. @RequiresPermissions("exc:exceptioninfo:feedback"
  11. @RequestMapping(value = "attachment", method = RequestMethod.POST) 
  12. @ResponseBody 
  13. public Map<String, Object> uploadAttachment(@RequestParam(value = "testId", required = true) String testId,  
  14.  
  15. HttpServletRequest request) 
  16. throws UnsupportedEncodingException { 
  17. Map<String, Object> result = new HashMap<String, Object>(); 
  18.  
  19. MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; 
  20. // 獲得文件 
  21. MultipartFile multipartFile = multipartRequest.getFile("Filedata");// 與前端設置的fileDataName屬性值一致 
  22. String filename = multipartFile.getOriginalFilename();// 文件名稱 
  23. InputStream is = null
  24. try { 
  25. //讀取文件流 
  26. is = multipartFile.getInputStream(); 
  27. byte[] bytes = FileCopyUtils.copyToByteArray(is); 
  28. BlobField blobField = new BlobField(); 
  29. blobField.setTabName("testL"); 
  30. blobField.setTabPkidValue(testId); 
  31. blobField.setBlobColName("attachment"); 
  32. blobField.setBlobColValue(bytes); 
  33. //保存blob字段 
  34. this.testService.save(blobField, testId, filename); 
  35. result.put("flag"true); 
  36. result.put("attachmentId", blobField.getId()); 
  37. result.put("attachmentName", filename); 
  38. catch (IOException e) { 
  39. e.printStackTrace(); 
  40. result.put("flag"false); 
  41. finally { 
  42. IOUtils.closeQuietly(is); 
  43. return result; 

b、讀取BLOB字段

 

 
  1. /** 
  2. * 下載附件 
  3.  
  4. * @param attachmentId 
  5. * @return 
  6. */ 
  7. @RequiresPermissions("exc:exceptioninfo:view"
  8. @RequestMapping(value = "download", method = RequestMethod.GET) 
  9. public void download(@RequestParam(value = "attachmentId", required = true) String attachmentId, 
  10. @RequestParam(value = "attachmentName", required = true) String attachmentName, HttpServletRequest  
  11. request, HttpServletResponse response) { 
  12. ServletOutputStream out = null
  13. try { 
  14. response.reset(); 
  15. String userAgent = request.getHeader("User-Agent"); 
  16. byte[] bytes = userAgent.contains("MSIE") ? attachmentName.getBytes() : attachmentName.getBytes("UTF- 
  17. "); // fileName.getBytes("UTF-")處理safari的亂碼問題 
  18. String fileName = new String(bytes, "ISO--"); 
  19. // 設置輸出的格式 
  20. response.setContentType("multipart/form-data"); 
  21. response.setHeader("Content-Disposition""attachment;fileName=" + URLEncoder.encode(attachmentName,  
  22. "UTF-")); 
  23. BlobField blobField = this.blobFieldService.get(attachmentId); 
  24. //獲取blob字段 
  25. byte[] contents = blobField.getBlobColValue(); 
  26. out = response.getOutputStream(); 
  27. //寫到輸出流 
  28. out.write(contents); 
  29. out.flush(); 
  30. catch (IOException e) { 
  31. e.printStackTrace(); 

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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美激情国产高清| 欧美日韩爱爱视频| 亚洲欧美日韩网| 欧亚精品中文字幕| 中文字幕在线视频日韩| 97精品国产97久久久久久| 欧美日韩亚洲视频| 日本电影亚洲天堂| 成人av在线网址| 91精品国产91久久久久福利| 亚洲欧美一区二区三区四区| 在线观看国产成人av片| 日韩亚洲精品视频| 91精品在线观| 日韩免费在线播放| 国产一区二区三区在线观看视频| 黄色一区二区三区| 欧美日韩国产中文字幕| 91av在线播放| 国产成人+综合亚洲+天堂| 日韩暖暖在线视频| 国产精品久久久久久久app| 国内偷自视频区视频综合| 97超级碰碰碰| 亚洲欧美国产一本综合首页| 日韩精品有码在线观看| 色无极亚洲影院| 国产精品电影观看| 欧美一区三区三区高中清蜜桃| 日本三级久久久| 亚洲激情在线视频| 亚洲人成电影在线观看天堂色| 亚洲无线码在线一区观看| 国产精品视频免费在线| 亚洲精品国偷自产在线99热| 91国语精品自产拍在线观看性色| 久久99久久99精品中文字幕| 亚洲国产成人av在线| 在线观看国产精品日韩av| 国产丝袜一区二区三区| 2019国产精品自在线拍国产不卡| 欧美激情精品久久久久| 国产精品久久久久免费a∨大胸| 欧美精品一本久久男人的天堂| 日韩在线观看免费av| 亚洲精品按摩视频| 亚洲天堂久久av| 国产成人精品久久二区二区91| 欧美性xxxxhd| 欧美麻豆久久久久久中文| 亚洲高清色综合| 日韩在线中文字幕| 91精品国产91久久久久久| 中文字幕日韩高清| 精品久久久久久久久久国产| 欧美丰满片xxx777| 成人激情电影一区二区| 国产精品偷伦一区二区| 国产精品扒开腿做爽爽爽男男| 久久久成人精品| 欧美成人高清视频| 亚洲美女av网站| 中文字幕av一区二区三区谷原希美| 国产91露脸中文字幕在线| 成人免费福利视频| 国产精品一二三视频| 91天堂在线观看| 亚洲国产精品va在线看黑人| 57pao国产精品一区| 这里只有精品在线观看| 中文字幕亚洲欧美日韩在线不卡| 午夜免费在线观看精品视频| 久久精品视频在线| 欧美成人激情在线| 日韩免费精品视频| 国产色综合天天综合网| 日本精品性网站在线观看| 欧美亚洲日本网站| 欧美精品第一页在线播放| 按摩亚洲人久久| 亚洲跨种族黑人xxx| 亚洲精品美女久久| 欧美中文字幕在线视频| 清纯唯美日韩制服另类| 日韩精品中文在线观看| 久久天天躁狠狠躁夜夜av| 国产日韩精品在线观看| 日韩中文字幕欧美| 欧美精品videossex性护士| 色综合久久天天综线观看| 国产女精品视频网站免费| 久久人人爽人人爽人人片亚洲| 中文字幕亚洲欧美日韩高清| 国内精品久久久久伊人av| 亚洲欧洲在线播放| 国产精品极品在线| 国产精品久久9| 色视频www在线播放国产成人| 欧美精品久久久久久久免费观看| 日韩av有码在线| 免费不卡在线观看av| 尤物精品国产第一福利三区| 国产精品永久免费视频| 日韩暖暖在线视频| 亚洲欧美www| 国内精品久久久久久久久| 国外色69视频在线观看| 国产精品国产福利国产秒拍| 欧美激情啊啊啊| 欧美成人精品在线视频| 中文字幕亚洲欧美一区二区三区| 亚洲精品国产精品国自产在线| 成人激情综合网| 亚洲精品久久久久久久久久久| 国产成人久久精品| 精品亚洲国产视频| 日韩欧美中文在线| 性日韩欧美在线视频| 亚洲一区二区三区在线视频| 中文字幕日韩av电影| 亚洲第一色在线| 久久久天堂国产精品女人| 国产suv精品一区二区三区88区| 亚洲成人黄色网址| 日韩在线小视频| 中文字幕在线看视频国产欧美| 中文字幕亚洲综合久久筱田步美| 精品久久久久久国产91| 亚洲品质视频自拍网| 欧美成人激情视频| 欧美成人亚洲成人| 中文字幕无线精品亚洲乱码一区| 日日狠狠久久偷偷四色综合免费| 亲爱的老师9免费观看全集电视剧| 国产精品欧美激情| 亚洲aaa激情| 中文国产成人精品久久一| 亚洲精品xxxx| 日韩欧美在线视频观看| 国产精品都在这里| 欧美性受xxx| 亚洲国产欧美一区二区三区久久| 国产成人精品国内自产拍免费看| 91精品国产91| 亚洲精品在线不卡| 亚洲精品少妇网址| 国产成+人+综合+亚洲欧美丁香花| 国产福利成人在线| yellow中文字幕久久| 精品久久久久久中文字幕大豆网| 91久久久久久国产精品| 亚洲精品一区二区在线| 国内精品久久久久久影视8| 成人黄色免费在线观看| 久久91超碰青草是什么| 国产美女精品免费电影| 久久躁狠狠躁夜夜爽| 欧美日韩成人在线播放| 视频在线观看一区二区| 国产精品日日摸夜夜添夜夜av| 亚洲欧美另类人妖| 欧美亚洲国产日韩2020| 日韩精品999| 国模gogo一区二区大胆私拍|