个人博客系统开发总结之 mybatis操作blob字段

        mybaits通过mapper文件进行数据库的增删改查操作,在进行增删改查操作时需要将java的数据类型与数据库的数据类型进行转换,此时就会用到TypeHandler类型处理器。mybatis内置了java基础数据类型的类型处理器,也支持自定义的类型处理器。

        在博客系统开发时,对于博客文章的存储,我采用在oracle数据库中存储blob字段的形式,前端使用layui的富文本编辑器进行编辑和展示文章。前端传入需要保存的文章是一个string类型,怎样使用mybatis持久层保存到数据库的blob字段中呢,以及从数据库中查出blob字段并转换成java中的string类型以更好的返回给前端呢,此时就需要用到自定义的类型处理器。

1、自定义BlobTypeHandler类型处理:集成BaseTypeHandler类,实现抽象方法,在抽象方法中实现类型处理即可

/**
 * 
 * @ClassName::BlobTypeHandler 
 * @Description: 自定义mybatis blob字段处理
 * @author :柯雷
 * @date :2018年9月28日 下午2:54:36 
 *
 */
public class BlobTypeHandler extends BaseTypeHandler<String> {

	/**
	 * @Description 日志打印对象 
	 */
	Logger logger = LoggerFactory.getLogger(BlobTypeHandler.class);
	
	/**
	 * <p>Title:setNonNullParameter</p> 
	 * <p>Description:insert或者update时前处理blob字段 </p> 
	 * @param ps
	 * @param i
	 * @param parameter
	 * @param jdbcType
	 * @throws SQLException 
	 * @see org.apache.ibatis.type.BaseTypeHandler#setNonNullParameter(java.sql.PreparedStatement, int, java.lang.Object, org.apache.ibatis.type.JdbcType)
	 */
	@Override
	public void setNonNullParameter(PreparedStatement ps, int i, String parameter, JdbcType jdbcType)
			throws SQLException {
		logger.info("【BlobTypeHandler】insert或者update时处理blob字段:");
		//声明一个输入流对象
        ByteArrayInputStream bis = null;  
        try {  
            //把字符串转为字节流
            bis = new ByteArrayInputStream(parameter.getBytes("gbk"));  
        } catch (Exception e) {  
        	logger.error("【BlobTypeHandler】insert或者update处理blob字段出错,错误原因为:" + e);
            throw new RuntimeException("Blob Encoding Error!");  
        } finally {
			if (bis != null) {
				try {
					bis.close();
				} catch (IOException e) {
					logger.error("
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值