控制层
@Controller
@RequestMapping("eboard")
public class EboardController {
@Autowired
private EboardService eboardService;
@RequestMapping("eboardFrist")
public ModelAndView initFristPage(Model model) {
ModelAndView result = new ModelAndView("eboard/eboardFrist");
model.addAttribute("newImg",
JSONArray.fromObject(eboardService.listNewImager()));
result.addObject(model);
return result;
}
}
mapper.xml,在需要转换的属性后面加typeHandler="com.cyl.mybatisTypeHandler.TypeHandlerBlob2String"(com.cyl.mybatisTypeHandler(包名).TypeHandlerBlob2String(类名))
<select id="listNewImager" resultMap="newImgerMap">
SELECT f.id, f.img_content, f.img FROM ebd_file f where f.status = 0 order by f.create_time desc limit 0,3
</select>
<resultMap type="newImger" id="newImgerMap">
<id property="id" column="id"/>
<result property="createUserId" column="create_userid"/>
<result property="createTime" column="create_time"/>
<result property="updateUserId" column="update_userid"/>
<result property="updateTime" column="update_time"/>
<result property="status" column="status"/>
<result property="imgName" column="img_name"/>
<result property="imgTitle" column="img_title"/>
<result property="imgContent" column="img_content"/>
<result property="imgBase64" column="img" typeHandler="com.cyl.mybatisTypeHandler.TypeHandlerBlob2String"/>
</resultMap>
TypeHandlerBlob2String 继承BaseTypeHandler,重写方法
package com.cyl.mybatisTypeHandler;
import java.io.ByteArrayInputStream;
import java.io.UnsupportedEncodingException;
import java.sql.Blob;
import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType;
public class TypeHandlerBlob2String extends BaseTypeHandler<String> {
private static final Log LOGGER = LogFactory.getLog(TypeHandlerBlob2String.class);
// 指定字符集
private static final String DEFAULT_CHARSET = "utf-8";
@Override
public void setNonNullParameter(PreparedStatement ps, int i, String parameter,JdbcType jdbcType)
throws SQLException {
ByteArrayInputStream bis;
try {
// 把String转化成byte流
bis = new ByteArrayInputStream(parameter.getBytes(DEFAULT_CHARSET));
} catch (UnsupportedEncodingException e) {
throw new RuntimeException("Blob Encoding Error!");
}
ps.setBinaryStream(i, bis, parameter.length());
}
@Override
public String getNullableResult(ResultSet rs, String columnName) throws SQLException {
Blob blob = rs.getBlob(columnName);
byte[] returnValue = null;
String result = null;
if (null != blob) {
returnValue = blob.getBytes(1, (int) blob.length());
}
try {
if (null != returnValue) {
// 把byte转化成string
result = new String(returnValue, DEFAULT_CHARSET);
}
} catch (UnsupportedEncodingException e) {
throw new RuntimeException("Blob Encoding Error!");
}
return result;
}
@Override
public String getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
Blob blob = cs.getBlob(columnIndex);
byte[] returnValue = null;
String result = null;
if (null != blob) {
returnValue = blob.getBytes(1, (int) blob.length());
}
try {
if (null != returnValue) {
result = new String(returnValue, DEFAULT_CHARSET);
}
} catch (UnsupportedEncodingException e) {
throw new RuntimeException("Blob Encoding Error!");
}
return result;
}
/**
* @Description:
*
* @param arg0
* @param arg1
* @return
* @throws SQLException
*
* @see org.apache.ibatis.type.BaseTypeHandler#getNullableResult(java.sql.ResultSet,
* int)
*
*/
@Override
public String getNullableResult(ResultSet rs, int columnName) throws SQLException {
LOGGER.debug("enter function");
String result = null;
Blob blob = rs.getBlob(columnName);
byte[] returnValue = null;
if (null != blob) {
returnValue = blob.getBytes(1, (int) blob.length());
}
try {
// 把byte转化成string
if (null != returnValue) {
result = new String(returnValue, DEFAULT_CHARSET);
}
} catch (UnsupportedEncodingException e) {
throw new RuntimeException("Blob Encoding Error!");
}
LOGGER.debug("exit function");
return result;
}
}
实体类
package com.cyl.model.eboard;
import java.util.Date;
public class NewImger {
private int id;
private Integer createUserId;
private Date createTime;
private Integer updateUserId;
private Date updateTime;
private int status;
private String imgName;
private String imgTitle;
private String imgContent;
private Object img;
private String imgBase64;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public Integer getCreateUserId() {
return createUserId;
}
public void setCreateUserId(Integer createUserId) {
this.createUserId = createUserId;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Integer getUpdateUserId() {
return updateUserId;
}
public void setUpdateUserId(Integer updateUserId) {
this.updateUserId = updateUserId;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public String getImgName() {
return imgName;
}
public void setImgName(String imgName) {
this.imgName = imgName;
}
public String getImgTitle() {
return imgTitle;
}
public void setImgTitle(String imgTitle) {
this.imgTitle = imgTitle;
}
public String getImgContent() {
return imgContent;
}
public void setImgContent(String imgContent) {
this.imgContent = imgContent;
}
public Object getImg() {
return img;
}
public void setImg(Object img) {
this.img = img;
}
public String getImgBase64() {
return imgBase64;
}
public void setImgBase64(String imgBase64) {
this.imgBase64 = imgBase64;
}
}