从Mybatis检索内部字段映射<对象,字符串>



我有CartItem

@Data
public class Cart {
private Long id;
private Map<Item, Long> items;
public Cart() {
items = new HashMap<>();
}
}
@Data
public class Item {
private Long id;
private String name;
private String description;
private BigDecimal price;
private ItemType type;
private Boolean available;
}

和我想得到这个对象HashMap里面从数据库与Mybatis在xml。我有这样的数据下一个查询:

SELECT c.id          as cart_id,
i.id          as item_id,
i.name        as item_name,
i.description as item_description,
i.price       as item_price,
i.type        as item_type,
i.available   as item_available,
ci.quantity   as item_quantity
FROM carts c
JOIN carts_items ci ON c.id = ci.cart_id
LEFT JOIN items i on i.id = ci.item_id
WHERE c.id = #{id}

所以我还没有找到任何解决这个问题的方法,我希望你能帮助我的代码示例

我决定改变一下我的结构我添加了private List<CartItem> cartItems;,我存储所有项目字段和数量。我也重写了getItems()方法:

public Map<Item, Long> getItems() {
return cartItems.stream()
.collect(Collectors.toMap(CartItem::getItem, CartItem::getQuantity));
}

现在我将数据设置为CartItem对象列表并在需要时将它们映射到map

最新更新