当前位置: 首页 > news >正文

mybatis-plus一对多关联查询

MyBatis-Plus 本身主要关注单表操作,但可以通过几种方式实现一对多关联查询:

1. 使用 XML 映射文件实现

这是最传统的方式,通过编写 SQL 和 ResultMap 实现:

<!-- UserMapper.xml -->
<resultMap id="userWithOrdersMap" type="com.example.User"><id property="id" column="id"/><result property="name" column="name"/><!-- 一对多关联 --><collection property="orders" ofType="com.example.Order"><id property="id" column="order_id"/><result property="orderNo" column="order_no"/><result property="userId" column="user_id"/></collection>
</resultMap><select id="selectUserWithOrders" resultMap="userWithOrdersMap">SELECT u.*, o.id as order_id, o.order_no, o.user_idFROM user uLEFT JOIN order o ON u.id = o.user_idWHERE u.id = #{id}
</select>

2. 使用注解方式实现

MyBatis 也支持通过注解实现:

public interface UserMapper extends BaseMapper<User> {@Select("SELECT * FROM user WHERE id = #{id}")@Results({@Result(id=true, property="id", column="id"),@Result(property="name", column="name"),@Result(property="orders", column="id",many=@Many(select="com.example.mapper.OrderMapper.selectByUserId"))})User selectUserWithOrders(Long id);
}public interface OrderMapper extends BaseMapper<Order> {@Select("SELECT * FROM order WHERE user_id = #{userId}")List<Order> selectByUserId(Long userId);
}

3. 使用 MyBatis-Plus 的关联查询插件

可以集成第三方插件如 mybatis-plus-join

// 添加依赖后使用
public List<User> getUserWithOrders() {return joinLambdaWrapper(User.class).leftJoin(Order.class, Order::getUserId, User::getId).selectAll(User.class).selectAs(Order::getId, User::getOrderId).selectAs(Order::getOrderNo, User::getOrderNo).list();
}

相关文章:

  • python自助棋牌室管理系统
  • 一款强大的音视频处理工具--FFmpeg-2--常用音频处理示例
  • RPC - 服务注册与发现模块
  • 搜索二叉数(c++)
  • [MSPM0开发]之九 MSPM0G3507的ADC
  • SpringBoot电脑商城项目--商品详情+加入购物车
  • springboot将文件插入到指定路径文件夹,判断文件是否存在以及根据名称删除
  • 思辨场域丨AR技术如何重塑未来学术会议体验?
  • 绝不强迫登录!Apipost 离线模式正式上线
  • [学习] 在C语言中使用字典(附示例)
  • tkinter Entry(输入框)组件学习指南
  • Ajax-入门
  • React Native【详解】动画
  • 小白的进阶之路系列之十七----人工智能从初步到精通pytorch综合运用的讲解第十部分
  • 【unitrix】 3.4 类型级逻辑运算(bit.rs)
  • 【Docker】docker-compose中的nginx为何突然访问不到服务了?
  • 【CS创世SD NAND征文】STM32户外无线终端管理设备的数据存储方案
  • 拼多多消息对接、支付服务策略(策略+工厂)
  • supervisor /usr/bin/dotnet: cannot execute binary file
  • cili3d笔记20 正交投影3d重建笔记1
  • 长沙环路建设开发有限公司网站/北京网络营销咨询公司
  • 网站域名费用怎么做分录/优化网站seo公司
  • 盗号和做钓鱼网站那个罪严重/百度网址大全 旧版本
  • 织梦后台网站栏目空白/免费留电话的广告
  • 做网站需要注意的/广告关键词排名
  • 河南网站建设设计/百度网页版网址