Mybatis 返回 对象中属性中包含 List(T)

实体对象

@Data
public class SysUser {

    private Long id;

    private String loginName;

    private String userName;

    private String email;

    private List<Long> roles;

}

 

Mapper 映射文件

<resultMap id="SysUserMap" type="com.answer.ai.entity.dto.SysUser">
    <!-- 必须写成 <id... /> 而不是 <result column="id" ... /> -->
    <id property="id" column="id" jdbcType="BIGINT" />
    <result column="login_name" property="loginName" jdbcType="VARCHAR"/>
    <result column="user_name" property="userName" jdbcType="VARCHAR"/>
    <result column="email" property="email" jdbcType="VARCHAR"/>
    <collection property="roles" ofType="Long">
        <constructor>
            <arg column="role_id" />
        </constructor>
    </collection>
</resultMap>

<select id="queryUsers" resultMap="SysUserMap">
    SELECT su.id, su.login_name, su.user_name, su.email, sur.role_id
    FROM sys_user su
    LEFT JOIN sys_user_role sur on sur.user_id = su.id
</select>

 

响应内容

{
    "code": 10000,
    "desc": "success",
    "data": [
        {
            "id": 1,
            "loginName": "admin",
            "userName": "林**",
            "email": "answer_ljm@163.com",
            "roles": [
                1
            ]
        },
        {
            "id": 2,
            "loginName": "answer",
            "userName": "张**",
            "email": "1072594307@qq.com",
            "roles": [
                2,
                3
            ]
        }
    ]
}
  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
MyBatis ,如果返回对象包含多个不相关的 List 属性,可以通过使用嵌套查询来实现。 首先,确保你的返回对象包含了所有需要的 List 属性。假设你的返回对象是一个包含两个不相关的 List 属性的类,如下所示: ```java public class MyObject { private List<ObjectA> listA; private List<ObjectB> listB; // getter and setter methods } ``` 其,`ObjectA` 和 `ObjectB` 是两个不相关的对象。 接下来,在你的 Mapper 接口定义两个嵌套查询来分别查询这两个不相关的 List 属性。你可以使用 `resultMap` 来映射查询结果到返回对象List 属性。 ```java public interface MyMapper { @Select("SELECT * FROM tableA") @ResultMap("objectAResultMap") List<ObjectA> queryListA(); @Select("SELECT * FROM tableB") @ResultMap("objectBResultMap") List<ObjectB> queryListB(); } ``` 然后,在 XML 配置文件定义两个 `resultMap`,分别映射查询结果到两个 List 属性。 ```xml <resultMap id="objectAResultMap" type="com.example.ObjectA"> <!-- Define mappings for ObjectA properties --> </resultMap> <resultMap id="objectBResultMap" type="com.example.ObjectB"> <!-- Define mappings for ObjectB properties --> </resultMap> ``` 最后,在你的 Service 或者 Controller 调用这两个嵌套查询,并将结果设置到返回对象的对应属性。 ```java public class MyService { private MyMapper myMapper; public MyObject getMyObject() { MyObject myObject = new MyObject(); myObject.setListA(myMapper.queryListA()); myObject.setListB(myMapper.queryListB()); return myObject; } } ``` 这样,你就可以通过 MyBatis 返回一个包含多个不相关的 List 属性对象了。记得在实际情况根据你的表结构和需求进行相应的调整和修改。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jaemon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值