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.ibatis.type.BaseTypeHandler; import org.apache.ibatis.type.JdbcType; import org.apache.log4j.Logger; public class BlobTypeHandle extends BaseTypeHandler<String>{ private static final Logger log = Logger.getLogger(BlobTypeHandle.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 { log.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!"); } log.debug("exit function"); return result; } }
第二部:创建一个实体类
import java.util.Date; public class MsgPushEntity { // private Integer mid; //推送信息申请表主键ID // // private Integer sellerid;//商户ID // // private Integer msgtype;//消息推送类型:1 消息推送 2 发送短信 private String content;//消息推送内容 private Date pushdate;//推送时间 private String pushobj;//全部:0; 高频次:1;中频次:2;低频次:3;一些天未消费:4;高消费:5;中消费:6;低消费:7;其他客户:8(老客户);店铺新客户:9;角色A:10;角色B:11;角色C:12:角色D:13 private Date applytime;//申请时间 private String status;//审核状态:0 待审核 1 审核通过 2 审核不通过 // private String reason;//审核不通过理由 // // private Date edate;//审核时间 // public Integer getMid() { // return mid; // } // public void setMid(Integer mid) { // this.mid = mid; // } // public Integer getSellerid() { // return sellerid; // } // public void setSellerid(Integer sellerid) { // this.sellerid = sellerid; // } // public Integer getMsgtype() { // return msgtype; // } // public void setMsgtype(Integer msgtype) { // this.msgtype = msgtype; // } public Date getPushdate() { return pushdate; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } public void setPushdate(Date pushdate) { this.pushdate = pushdate; } public String getPushobj() { return pushobj; } public void setPushobj(String pushobj) { this.pushobj = pushobj; } public Date getApplytime() { return applytime; } public void setApplytime(Date applytime) { this.applytime = applytime; } public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } // public String getReason() { // return reason; // } // public void setReason(String reason) { // this.reason = reason; // } // public Date getEdate() { // return edate; // } // public void setEdate(Date edate) { // this.edate = edate; // }
第三部:配置mybatis sql文件
<resultMap id="MsgPushEntity" type="com.xmniao.xmn.core.manage.entity.MsgPushEntity" > <result column="content" property="content" typeHandler="com.xmniao.xmn.core.manage.service.BlobTypeHandle"/> <result column="push_date" property="pushdate" jdbcType="DATE"/> <result column="push_object" property="pushobj" jdbcType="VARCHAR"/> <result column="apply_time" property="applytime" jdbcType="DATE"/> <result column="status" property="status" jdbcType="VARCHAR"/> </resultMap> <select id="queryMsgApplyList" parameterType="map" resultMap="MsgPushEntity"> SELECT content, date_format(push_date,'%Y-%m-%d %H:%i:%s') pushdate, push_object pushobj, date_format(apply_time,'%Y-%m-%d %H:%i:%s') applytime, case status when 0 then '待审核' when 1 then '已推送' else '已拒绝' end status from t_msg_push_apply where sellerid = #{sellerid} and msg_type = #{msgType} <if test="status != null"> and `status` != #{status} </if> order by mid desc </select>
第四部:实现类
public Object pushMessageLogs(TypeRequest typeRequest){ try { Map<Object,Object> paramMap = new HashMap<>(); paramMap.put("sellerid", typeRequest.getSellerid()); paramMap.put("msgType", typeRequest.getType()); List<MsgPushEntity> resultList = pushMessageDao.queryMsgApplyList(paramMap); List<Map<Object,Object>> pushlist = new ArrayList<Map<Object,Object>>(); MsgPushEntity mpe = new MsgPushEntity(); for(int i=0; i<resultList.size(); i++){ Map<Object,Object> map = new HashMap<Object,Object>(); mpe = resultList.get(i); String content = mpe.getContent(); map.put("content", content); map.put("pushtime", mpe.getPushdate()); map.put("pushobject", mpe.getPushobj()); map.put("applytime", mpe.getApplytime()); map.put("pushstatus", mpe.getStatus()); pushlist.add(map); } Map<Object, Object> resultResponse = new HashMap<Object, Object>(); resultResponse.put("pushlogs", pushlist); MapResponse response = new MapResponse(ResponseCode.SUCCESS, "提交成功"); response.setResponse(resultResponse); return response; } catch (Exception e) { e.printStackTrace(); return new BaseResponse(ResponseCode.FAILURE, "获取消息推送历史记录失败"); } }