Mybatis:对象中有List<String>类型的属性数据该如何封装

您所在的位置:网站首页 如何做list Mybatis:对象中有List<String>类型的属性数据该如何封装

Mybatis:对象中有List<String>类型的属性数据该如何封装

2024-03-16 02:27| 来源: 网络整理| 查看: 265

目录 有图有真相方法1(慢慢看,别急着划走)方法2(从别的网友那看的,但是我没成功实现,你可以尝试一下)

有图有真相

在这里插入图片描述

方法1(慢慢看,别急着划走)

类:

@Data // lombok注解,用于生成get、set方法 public class CartSkuInfoTo { /** * skuId */ private Long skuId; /** * 默认图片 */ private String image; /** * 标题 */ private String title; /** * 价格 */ private BigDecimal price; /** * 商品属性集合 * 注意:这就是标题中提到的List类型的属性数据 */ private List skuAttr; }

xml:

SELECT sku_id, sku_default_img, sku_title, price FROM pms_sku_info WHERE sku_id = #{skuId} SELECT CONCAT( attr_name, ":", attr_value ) FROM pms_sku_sale_attr_value WHERE sku_id = #{sku_id}

解释:

首先来看resultMap标签,里面有几个简单数据,也就是那4个result标签,他们通过第一个select标签从数据库中将数据取出来,最复杂的就是那个商品属性集合,也就是private List skuAttr,我们下面慢慢分析如何取出它

我们来看resultMap标签中的,这和第二个select标签对应着,其中property="skuAttr"对应着CartSkuInfoTo 类中的skuAttr属性名称,column="sku_id"对应着resultMap标签中里面的sku_id,当然这和我们在第二个select标签中的#{sku_id}对应着,select="selectSkuAttr"中的selectSkuAttr对应着第二个select标签中的内容,即里面的selectSkuAttr,如果不清楚的,可以看下面的图:

在这里插入图片描述 证明: 在这里插入图片描述

方法2(从别的网友那看的,但是我没成功实现,你可以尝试一下)

类:

和方法1中的一样,不在赘述

xml:

SELECT psi.sku_id, psi.sku_default_img, psi.sku_title, psi.price, CONCAT( pssav.attr_name, ":", pssav.attr_value ) "sku_attr" FROM pms_sku_info psi JOIN pms_sku_sale_attr_value pssav ON psi.sku_id = pssav.sku_id WHERE psi.sku_id = #{skuId}

解释:

我们以sku_id=1为例,获取以上sql语句的运行结果,如下:

在这里插入图片描述 xml文件中以下代码的作用是将从数据库中查询出来的三个字符串结果封装成List:

其中column="sku_attr"中的sku_attr就是从数据库中是取出来的那几个字符串字段的名称,property="skuAttr"中的skuAttr是CartSkuInfoTo类中的List类型的属性名称

此方法来自https://www.jianshu.com/p/740179f11a65,截至目前有51个赞,说明还是有可信度的,估计是我的写法不对,大家如果有成功使用这种方法实现功能的,请告诉我一下的方法2写法错写哪里,蟹蟹!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3