关于myBatis和myBatisPlus关联表的查询

1.myBatis表关联查询:

在mapper.xml映射文件中添加<collection>或者<association>去关联另一张表.

2.myBatisPlus:使用EntityWapper对实体进行封装,通过IService中封装的sql方法去对实体进行增删改查,组装拼接好数据放入返回参数中返回给用户端.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Mybatis-plus 提供了多种关联查询的方式,下面介绍两种常用的方式。 1. 嵌套查询 嵌套查询是指在一个mapper.xml文件中编写多个select语句,通过嵌套的方式实现多关联查询。例如: ``` <select id="getUserWithRole" resultMap="userResultMap"> SELECT u.*, r.name as role_name FROM user u LEFT JOIN user_role ur ON u.id = ur.user_id LEFT JOIN role r ON ur.role_id = r.id WHERE u.id=#{id} </select> ``` 上面的查询语句中,使用了LEFT JOIN关联了三张,通过别名的方式将role的name字段映射到user的结果集中。 2. @TableField注解 @TableField注解是Mybatis-plus提供的一种简单的关联查询方式,可以在实体类的字段上标记注解,实现一对一、一对多、多对多等关联查询。例如: ``` @Data public class User { private Long id; private String name; private Integer age; @TableField(exist = false) private List<Role> roles; } @Data public class Role { private Long id; private String name; } // mapper.xml中查询语句 <select id="getUserWithRoleByAnnotation" resultMap="userResultMap"> SELECT u.*, r.id as role_id, r.name as role_name FROM user u LEFT JOIN user_role ur ON u.id = ur.user_id LEFT JOIN role r ON ur.role_id = r.id WHERE u.id=#{id} </select> // UserServiceImpl中调用 @Override public User getUserWithRoleByAnnotation(Long id) { User user = userMapper.selectById(id); List<Role> roles = roleMapper.selectList( new QueryWrapper<Role>().inSql("id", "SELECT role_id FROM user_role WHERE user_id=" + id)); user.setRoles(roles); return user; } ``` 上面的示例中,通过@TableField注解将List<Role>类型的roles字段映射到了user的结果集中。在查询时,使用inSql函数查询关联的数据,并将结果集设置到user对象中返回。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值