使用resultMap将SQL查询结果放入List,List中再嵌套List和其他对象

<resultMap id="sjqsMap" type="com.jqxx.digtwinresop.module.equipment.controller.admin.equipmentData.vo.dto.EquipmentDataDto">
        <id column = "id_a" property = "id" />这是重中之重
        <collection property="equipmentInfoVo" ofType="com.jqxx.digtwinresop.module.equipment.controller.admin.equipmentInfo.vo.EquipmentInfoVo" resultMap="infoVoMap"/>
        <collection property="dataVoList" ofType="com.jqxx.digtwinresop.module.equipment.controller.admin.equipmentData.vo.EquipmentDataVo" resultMap="dataVoMap"/>
    </resultMap>

    <resultMap id="infoVoMap" type="com.jqxx.digtwinresop.module.equipment.controller.admin.equipmentInfo.vo.EquipmentInfoVo">
        <id property="id" column="id_a" />
        <result property="name" column="name_a" />
        <result property="status" column="status_a" />
        <result property="createTime" column="create_time_a" />
        <result property="updateTime" column="update_time_a" />
        <result property="sbwz" column="sbwz_a" />
        <result property="sfgz" column="sfgz_a" />
        <result property="xzb" column="xzb_a" />
        <result property="yzb" column="yzb_a" />
        <result property="gczb" column="gczb_a" />
        <result property="yjyzxxOne" column="yjyzxx_one_a" />
        <result property="yjyzxxTwo" column="yjyzxx_two_a" />
        <result property="yjyzsxOne" column="yjyzsx_one_a" />
        <result property="yjyzsxTwo" column="yjyzsx_two_a" />
        <result property="bjyzxxOne" column="bjyzxx_one_a" />
        <result property="bjyzxxTwo" column="bjyzxx_two_a" />
        <result property="equipmentGroup" column="equipment_group_a" />
    </resultMap>

    <resultMap id="dataVoMap" type="com.jqxx.digtwinresop.module.equipment.controller.admin.equipmentData.vo.EquipmentDataVo">
        <id property="id" column="id_b" />
        <result property="equipmentInfoId" column="equipment_info_id_b" />
        <result property="createTime" column="create_time_b" />
        <result property="status" column="status_b" />
        <result property="value" column="value_b" />
        <result property="equipmentInfoName" column="equipment_info_name_b" />
    </resultMap>

记个笔记,免得以后再翻资料

p: 最关键的一步,<id column = "id_a" property = "id" />,必须加上这句,不然查询结果不对,查询的每个集合中的数据单独成一个对象封装在集合了

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
如果需要在 MyBatis 的查询结果包含嵌套List 对象,可以使用 MyBatis 的关联查询和 Collection 和 ResultMap 来实现。具体步骤如下: 1. 在 MyBatis 的 Mapper 文件定义 ResultMap。 例如,以下是定义一个 ResultMap,将查询结果的 id、name 和 age 字段映射到一个 User 对象,并将关联查询的 orders 映射到 User 对象的 orders 属性: ``` <resultMap id="userMap" type="com.example.User"> <id column="id" property="id"/> <result column="name" property="name"/> <result column="age" property="age"/> <collection property="orders" resultMap="orderMap"/> </resultMap> <resultMap id="orderMap" type="com.example.Order"> <id column="id" property="id"/> <result column="name" property="name"/> <result column="price" property="price"/> </resultMap> ``` 2. 在 SQL 查询语句使用关联查询和 Collection。 例如,以下是一个使用关联查询和 Collection 查询用户及其订单的 SQL 语句: ``` <select id="findUsers" resultMap="userMap"> select u.id, u.name, u.age, o.id as order_id, o.name as order_name, o.price from user u left join order o on u.id = o.user_id </select> ``` 3. 在 Java 代码调用 MyBatis 的 SqlSession 的 selectList 方法执行查询,并传入 Mapper 文件定义的 SQL 查询的 ID。 例如,以下是一个调用查询所有用户及其订单的方法的示例: ``` SqlSession sqlSession = sqlSessionFactory.openSession(); List<User> userList = sqlSession.selectList("com.example.UserMapper.findUsers"); ``` 4. 返回的 userList 就是一个包含所有用户的 List,每个 User 对象包含 id、name、age 和 orders 属性,其 orders 属性是一个包含 Order 对象List。 注意,在定义 ResultMap 时,可以使用 collection 元素将关联查询结果映射到对象的一个 List 属性。在 SQL 查询语句使用 left join 等关键字指定关联方式,并使用别名指定嵌套对象的属性名。这样,MyBatis 在执行查询时就会将查询结果解析成指定的 Java 类型,并将映射的属性值设置到对象属性,从而实现嵌套 List 对象的映射。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值