1.对应图片资源这张表创建对应的实体类
Ibatisblob.java
private byte[] picresult;
public byte[]
getPicresult() {
return picresult;
}
public void setPicresult(
byte[] picresult) {
this.picresult = picresult;
}
2.Dao层中的Dao.java和对应的映射文件sqlmap.xml
Dao.java
public List pic(
Map map) {
return this
.getSqlMapClientTemplate()
.queryForList(
"pic",
map);
}
sqlmap.xml
<sqlMap
namespace=
"**" >
<typeAlias
alias=
"ibatisblob" type=
"cn.**.dao.IbatisBlob" />
<
select id=
"pic" parameterClass=
"java.util.HashMap" resultClass=
"ibatisblob">
select
pic
from
PICRESULT t
where
t.ispic =
1
and t.id =
#id#
and t.name=
#name#
</
select>
3.service层处理
lllDao llis = (Dao) SpringBeansUtil.getBean(
"lllDao");
Map<
String,
String> map1 =
new HashMap<
String,
String>();
map1.put(
"id", id);
map1.put(
"name", name);
List<IbatisBlob> imgResource = llis.pic(map1);
String str1 =
null;
if(imgResource !=
null && imgResource.size()>
0) {
byte[] picresult = imgResource.get(
0).getPicresult();
byte[] encodeBase64 = Base64.encodeBase64(picresult);
str1 =
new String(encodeBase64);
}
byte[] decodeBase64 = Base64.decodeBase64(encodeBase64);
byte2image(decodeBase64,
"G:\\1\\2.jpeg");
图片与字节数组相互转换
public byte[]
image2byte(String path){
byte[] data =
null;
FileImageInputStream input =
null;
try {
input =
new FileImageInputStream(
new File(path));
ByteArrayOutputStream output =
new ByteArrayOutputStream();
byte[] buf =
new byte[
1024];
int numBytesRead =
0;
while ((numBytesRead = input.read(buf)) != -
1) {
output.write(buf,
0, numBytesRead);
}
data = output.toByteArray();
output.close();
input.close();
}
catch (FileNotFoundException ex1) {
ex1.printStackTrace();
}
catch (IOException ex1) {
ex1.printStackTrace();
}
return data;
}
public void byte2image(
byte[] data,String path){
if(data.length<
3||path.equals(
""))
return;
try{
FileImageOutputStream imageOutput =
new FileImageOutputStream(
new File(path));
imageOutput.write(data,
0, data.length);
imageOutput.close();
System.
out.println(
"Make Picture success,Please find image in " + path);
}
catch(Exception ex) {
System.
out.println(
"Exception: " + ex);
ex.printStackTrace();
}
}
public String
byte2string(
byte[] data){
if(data==
null||data.length<=
1)
return "0x";
if(data.length>
200000)
return "0x";
StringBuffer sb =
new StringBuffer();
int buf[] =
new int[data.length];
for(
int k=
0;k<data.length;k++){
buf[k] = data[k]<
0?(data[k]+
256):(data[k]);
}
for(
int k=
0;k<buf.length;k++){
if(buf[k]<
16) sb.append(
"0"+Integer.toHexString(buf[k]));
else sb.append(Integer.toHexString(buf[k]));
}
return "0x"+sb.toString().toUpperCase();
}