一、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、实体代码如下:
?
?
?1 package com.test.entity;
?2?
?3 import java.sql.Clob;?
?4?
?5 /**
?6 ?* 大字段?
?7 ?*/
?8 public class BlobField {?
?9?
10 ? ? private String tabName;// 表名
11 ? ? private String tabPkidValue;// 主键值
12 ? ? private String blobColName;// 列名
13 ? ? private byte[] blobColValue;// 列值 clob类型
14?
15 ? ? public String getTabName() {
16 ? ? ? ? return tabName;
17 ? ? }
18?
19 ? ? public void setTabName(String tabName) {
20 ? ? ? ? this.tabName = tabName;
21 ? ? }
22?
23 ? ? public String getTabPkidValue() {
24 ? ? ? ? return tabPkidValue;
25 ? ? }
26?
27 ? ? public void setTabPkidValue(String tabPkidValue) {
28 ? ? ? ? this.tabPkidValue = tabPkidValue;
29 ? ? }
30?
31 ? ? public String getBlobColName() {
32 ? ? ? ? return blobColName;
33 ? ? }
34?
35 ? ? public void setBlobColName(String blobColName) {
36 ? ? ? ? this.blobColName = blobColName;
37 ? ? }
38?
39 ? ? public byte[] getBlobColValue() {
40 ? ? ? ? return blobColValue;
41 ? ? }
42?
43 ? ? public void setBlobColValue(byte[] blobColValue) {
44 ? ? ? ? this.blobColValue = blobColValue;
45 ? ? }
46?
47 }
?
3、mybatis sql代码如下:
?
?
?1
?2
?3
?4?
?5 ? ?
?6 ? ? ? ? a.ID AS id,
?7 ? ? ? ? a.TAB_NAME AS tabName,
?8 ? ? ? ? a.TAB_PKID_VALUE AS tabPkidValue,
?9 ? ? ? ? a.BLOB_COL_NAME AS blobColName,
10 ? ? ? ? a.BLOB_COL_VALUE AS blobColValue
11 ? ?
12?
13 ? ?
14 ? ?
15?
16 ? ?
17 ? ? ? ? SELECT
18 ? ? ? ?
19 ? ? ? ? FROM BLOB_FIELD a
20 ? ? ? ?
21 ? ? ? ? WHERE a.ID = #{id}
22 ? ?
23?
24 ? ?
25 ? ? ? ? SELECT
26 ? ? ? ?
27 ? ? ? ? FROM BLOB_FIELD a
28 ? ? ? ?
29 ? ? ?
30?
31 ? ?
32 ? ? ? ? INSERT INTO BLOB_FIELD(
33 ? ? ? ? ID ,
34 ? ? ? ? TAB_NAME ,
35 ? ? ? ? TAB_PKID_VALUE ,
36 ? ? ? ? BLOB_COL_NAME ,
37 ? ? ? ? BLOB_COL_VALUE
38 ? ? ? ? ) VALUES (
39 ? ? ? ? #{id},
40 ? ? ? ? #{tabName},
41 ? ? ? ? #{tabPkidValue},
42 ? ? ? ? #{blobColName},
43 ? ? ? ? #{blobColValue,jdbcType=BLOB}
44 ? ? ? ? )
45 ? ?
46?
47 ? ?
48 ? ? ? ? UPDATE BLOB_FIELD SET
49 ? ? ? ? TAB_NAME = #{tabName},
50 ? ? ? ? TAB_PKID_VALUE = #{tabPkidValue},
51 ? ? ? ? BLOB_COL_NAME = #{blobColName},
52 ? ? ? ? BLOB_COL_VALUE = #{blobColValue}
53 ? ? ? ? WHERE ID = #{id}
54 ? ?
55 ? ?
56 ? ? ? ? DELETE FROM BLOB_FIELD?
57 ? ? ? ? WHERE ID = #{id}
58 ? ?
59 ? ??
60
?
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 uploadAttachment(@RequestParam(value = "testId", required = true) String testId,?
14?
15 HttpServlet