MP typeHandler 用法

typeHandler 可以在新增、更新、查询时候字段进行数据类型转换与解析
下面为用法步骤:
步骤1、实体类配置注解:

// 只针对jdbcType为varchar的字段进行mapping处理,勿略jdbcType设置为空的字段
@MappedJdbcTypes(includeNullJdbcType = false, value = JdbcType.VARCHAR) 
//autoResultMap 默认为false,设为true之后字段解析有typeHandler 的特殊字段
@TableName(value = "wx_user",autoResultMap = true)

步骤2、字段注解

	@TableField(typeHandler = ArrayLongTypeHandler.class, jdbcType= JdbcType.VARCHAR)
    private Long[] tagidList;

步骤3、解析类


/**
 *  存储到数据库, 将LONG数组转换成字符串;
 *  从数据库获取数据, 将字符串转为LONG数组.
 */
@MappedTypes({Long[].class})
@MappedJdbcTypes({JdbcType.VARCHAR})
public class ArrayLongTypeHandler extends BaseTypeHandler<Long[]> {

	private static Long[] longs = new Long[]{};

	@Override
	public void setNonNullParameter(PreparedStatement ps, int i,
									Long[] parameter, JdbcType jdbcType) throws SQLException {
		ps.setString(i, JSONUtil.toJsonStr(parameter));
	}

	@Override
	public Long[] getNullableResult(ResultSet rs, String columnName)
			throws SQLException {
		String text=rs.getString(columnName);
		return parse2LArr(text);
	}

	@Override
	public Long[] getNullableResult(ResultSet rs, int columnIndex)
			throws SQLException {
		String text=rs.getString(columnIndex);
		return parse2LArr(text);
	}

	@Override
	public Long[] getNullableResult(CallableStatement cs, int columnIndex)
			throws SQLException {
		String text=cs.getString(columnIndex);
		return parse2LArr(text);
	}


	private Long[] parse2LArr(String text){
		if(MyStrUtil.isNotEmpty(text)){
			JSONArray jsonArray= JSON.parseArray(text);
			List<Long> longList=jsonArray.toJavaList(Long.class);
			return longList.toArray(longs);
		}
		return longs;
	}


}

解析得到的结果
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值