mybatis-mp 高级功能@Fetch实现1对1,1对多

官网 :mybatis-mp.cn

ORM中的一对一,一对多

JPA 中 一对一,一对多 都是在实体类中配置的 ,这就导致很尴尬,很多时候 我们并不需要,只能设置懒延迟了,有时候 我们又想它不要懒延迟,不然后 每次都要手动去调一下,然后JSON 或者 模板里就会报错;灵活性不高;当然可能我没理解透彻!!!

mybatis-mp是如何做的,如何设计一对一,一对多的?

mybatis-mp的设计更为简单,实体类就是表的信息,不包含 一对一,一对多关系;一对一,一对多的关系表现在你的查询结果上(作者的理解是你的查询是多样性的)

第1步 创建VO类

@Data
@ResultEntity(SysUser.class)
public class FetchSysUserVo {

    private Integer id;

    private String userName;

    private String password;

    @Fetch(source = SysUser.class, property = "roleId", target = SysRole.class, targetProperty = "id")
    private SysRoleVo sysRole;

    private LocalDateTime create_time;

}

SysRoleVo sysRole 也可以是直接是实体类SysRole

第2步 查询

QueryChain.of(sysUserMapper)
        .select(FetchSysUserVo.class)
        .from(SysUser.class)
        .eq(SysUser::getId, 2)
        .returnType(FetchSysUserVo.class)
        .list();

select(FetchSysUserVo.class) 自动帮你select 所需要的列

returnType(FetchSysUserVo.class) 设置你结果的返回类

@Fetch 执行说明

第1个SQL select from sys_user where xx

第2个SQL select from sys_role where id in (…)

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值