当年淘宝刚开始上线投入使用的时候,作为一个新生的产品,很多人都难以相信这种虚拟交易,毕竟商品买卖一直都是一手交钱一手交货,突然看不到钱也看不到货,谁也不愿意冒这个险。
2023年08月20日
当年淘宝刚开始上线投入使用的时候,作为一个新生的产品,很多人都难以相信这种虚拟交易,毕竟商品买卖一直都是一手交钱一手交货,突然看不到钱也看不到货,谁也不愿意冒这个险。
2023年08月20日
很多人都以为蜜雪冰城是新的品牌,其实蜜雪冰城1997年就有了,那时候还是小店,慢慢的在2003年 注册了蜜雪冰城的商标。这么多年虽然发展的不错,但是远远没有达到爆火的程度,也没有到人尽皆知的地步。
2018年,蜜雪冰城启用了新的IP形象“雪王”,然后通过魔性洗脑的《蜜雪冰城甜蜜蜜MV》迅速出圈。如今蜜雪冰城已经是20年老店了!
2023年08月02日
当使用MyBatis处理一对多和多对一的查询时,我们通常会使用关联映射(association)和集合映射(collection)来表示关系。相应地,在处理插入操作时,我们可以使用嵌套映射(nested)来插入相关的数据。
下面是一个使用MyBatis处理一对多查询和插入的示例,同时展示了XXXMapper.xml
在查询和插入操作中的区别。
首先,假设我们有两个实体类:Order
和Item
,它们之间存在一对多关系,一个订单可以包含多个商品项。
Order.java(订单实体类):
复制javapublic class Order { private Integer id; private String orderNo; private List<Item> items; // 省略构造方法、getter和setter}
Item.java(商品项实体类):
复制javapublic class Item { private Integer id; private String itemName; private Integer orderId; // 省略构造方法、getter和setter}
查询一对多关系
OrderMapper.xml
中的关联映射(association)和集合映射(collection):
复制xml<!-- 查询订单及其商品项列表 --><select id="getOrderWithItems" resultMap="orderResultMap"> SELECT o.id, o.order_no, i.id AS item_id, i.item_name, i.order_id FROM orders o LEFT JOIN items i ON o.id = i.order_id WHERE o.id = #{orderId}</select><!-- 定义结果映射 --><resultMap id="orderResultMap" type="com.example.model.Order"> <id property="id" column="id" /> <result property="orderNo" column="order_no" /> <collection property="items" ofType="com.example.model.Item"> <id property="id" column="item_id" /> <result property="itemName" column="item_name" /> <result property="orderId" column="order_id" /> </collection></resultMap>
OrderMapper.java:
复制javapublic interface OrderMapper { Order getOrderWithItems(Integer orderId); }
插入一对多关系
OrderMapper.xml
中的嵌套映射(nested):
复制xml<!-- 插入订单及其商品项列表 --><insert id="insertOrderWithItems" parameterType="com.example.model.Order"> INSERT INTO orders (order_no) VALUES (#{orderNo}) <foreach collection="items" item="item" separator=";"> INSERT INTO items (item_name, order_id) VALUES (#{item.itemName}, LAST_INSERT_ID()) </foreach></insert>
OrderMapper.java:
复制javapublic interface OrderMapper { void insertOrderWithItems(Order order); }
在上述示例中,查询一对多关系使用了关联映射(association)和集合映射(collection)来定义结果映射,并在getOrderWithItems
方法中使用resultMap
来映射查询结果。
插入一对多关系使用了嵌套映射(nested)来实现插入操作,并在insertOrderWithItems
方法中定义了嵌套的插入语句。
需要注意的是,查询和插入操作的XML配置中存在一些差异。查询操作使用了resultMap
定义结果映射,而插入操作使用了parameterType
来指定参数的类型,并在SQL语句中使用了foreach
来实现批量插入。
希望以上示例对你有所帮助。如有任何问题,请随时提问。
Powered By Z-BlogPHP 1.7.3
关于我们:本人从2010年开始网络创业, 自学 建站,8年手机副业经验。网站内容:本站是本人记录生活感悟,读书学习的网站,希望能对大家有所帮助。网名:光影 职业:SEO营销顾问籍贯:四川广安,现定居成都 电话:个V:wx374241337 邮箱:374241337@qq.com 【腾讯云】轻量新用户上云福利,2核2G4M 低至 65元/年 , 超大容量云硬盘 0.5折起!