mybatis typeHandler arrayList以及linkedHashMap问题

需要在表对象上加autoResultMap = true,resultMap = "xxx.BaseResultMap",字段上加typeHandler = JsonFieldTypeHandler.class,xml文件加typeHandler="xxx.JsonFieldTypeHandler" javaType="xxx.ShopCartVo"
1,@TableName(value = "exchange_point_cart",autoResultMap = true,resultMap = "xxx.BaseResultMap")
2,@TableField(value = "product_list",typeHandler = JsonArrayTypeHandler.class)
      private List<ShopCartVo> productList;

3,

<resultMap id="BaseResultMap" type="xxx.ExchangePointCart">
    <id column="id" property="id" />
    <result column="member_code" property="memberCode" />
    <result column="product_list" property="productList" typeHandler="xxx.JsonArrayTypeHandler" javaType="xxx.ShopCartVo" />
</resultMap>
autoResultMap设置为true会默认的创建一个resultMap并使用,如果设置了resultMap则不会创建,
对于List<?> 的对象可以使用JsonfieldTypeHandler,autoResultMap需要设置为true,
不需要设置resultMap;如果使用JsonArrayTypeHandler则需要配置resultMap,
两种情况都是需要xml配置JsonArrayTypeHandler以及javaType的

https://mp.baomidou.com/guide/annotation.html#tablename

关于`autoResultMap`的说明:

mp会自动构建一个ResultMap并注入到mybatis里(一般用不上).下面讲两句: 因为mp底层是mybatis,所以一些mybatis的常识你要知道,mp只是帮你注入了常用crud到mybatis里 注入之前可以说是动态的(根据你entity的字段以及注解变化而变化),但是注入之后是静态的(等于你写在xml的东西) 而对于直接指定typeHandler,mybatis只支持你写在2个地方:

  1. 定义在resultMap里,只作用于select查询的返回结果封装
  2. 定义在insertupdatesql的#{property}里的property后面(例:#{property,typehandler=xxx.xxx.xxx}),只作用于设置值 而除了这两种直接指定typeHandler,mybatis有一个全局的扫描你自己的typeHandler包的配置,这是根据你的property的类型去找typeHandler并使用.
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值