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

网站消息推送今日新闻头条大事

网站消息推送,今日新闻头条大事,申请网站域名空间,衡量一个网站的指标在 MyBatis-Plus 中实现表关联查询、嵌套查询和子查询,通常需要结合 XML 映射文件或 Select 注解编写自定义 SQL。以下是具体示例演示:示例场景 假设有两张表: 用户表 userCREATE TABLE user (id BIGINT PRIMARY KEY,name VARCHAR(50),age IN…

在 MyBatis-Plus 中实现表关联查询、嵌套查询和子查询,通常需要结合 XML 映射文件或 @Select 注解编写自定义 SQL。以下是具体示例演示:


示例场景

假设有两张表:

  1. 用户表 user
    CREATE TABLE user (id BIGINT PRIMARY KEY,name VARCHAR(50),age INT
    );
    
  2. 订单表 order
    CREATE TABLE order (id BIGINT PRIMARY KEY,user_id BIGINT,       -- 关联用户IDamount DECIMAL(10,2),status INT
    );
    

1. 表关联查询(JOIN)

目标:查询订单信息并关联用户名
使用 XML 方式实现:

<!-- OrderMapper.xml -->
<select id="selectOrdersWithUser" resultType="map">SELECT o.id, o.amount, u.name AS userNameFROM `order` oLEFT JOIN `user` u ON o.user_id = u.idWHERE o.status = 1
</select>

2. 嵌套查询(Nested Query)

目标:查询用户及其所有订单(一对多)
使用 @Select 注解和 @Result 映射:

// UserMapper.java
@Select("SELECT * FROM user WHERE id = #{id}")
@Results({@Result(property = "id", column = "id"),@Result(property = "orders", column = "id", many = @Many(select = "selectOrdersByUserId"))
})
User selectUserWithOrders(Long id);@Select("SELECT * FROM `order` WHERE user_id = #{userId}")
List<Order> selectOrdersByUserId(Long userId);

3. 子查询(SubQuery)

目标:查询订单金额超过平均金额的订单
使用 QueryWrapper 实现:

// 子查询:计算平均金额
QueryWrapper<Order> avgWrapper = new QueryWrapper<>();
avgWrapper.select("AVG(amount)");// 主查询:筛选大于平均金额的订单
QueryWrapper<Order> wrapper = new QueryWrapper<>();
wrapper.gt("amount", avgWrapper); // 直接嵌入子查询List<Order> orders = orderMapper.selectList(wrapper);

生成的 SQL:

SELECT * FROM `order` 
WHERE amount > (SELECT AVG(amount) FROM `order`)

4. EXISTS 子查询

目标:查询有订单的用户

QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.exists("SELECT 1 FROM `order` WHERE user_id = user.id");List<User> users = userMapper.selectList(wrapper);

生成的 SQL:

SELECT * FROM user 
WHERE EXISTS (SELECT 1 FROM `order` WHERE user_id = user.id)

5. IN 子查询

目标:查询状态为1的订单所属用户

QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.inSql("id", "SELECT user_id FROM `order` WHERE status = 1");List<User> users = userMapper.selectList(wrapper);

生成的 SQL:

SELECT * FROM user 
WHERE id IN (SELECT user_id FROM `order` WHERE status = 1)

关键点总结

查询类型实现方式
关联查询使用 JOIN + XML/注解手动映射结果
嵌套查询通过 @Result(many=@Many)@Result(one=@One) 关联其他 Mapper 方法
子查询利用 QueryWrappergt/inSql/exists 等方法直接嵌入子查询 SQL
复杂子查询在 XML 中手写完整的 SQL 语句(推荐复杂场景)

注意

  • MyBatis-Plus 的 Wrapper 仅支持简单子查询,复杂关联查询建议使用 XML/注解。
  • 嵌套查询可能引发 N+1 问题,大数据量时慎用。
  • 表名/字段若为 SQL 关键字(如 order),需用反引号 ` 包裹。
http://www.dtcms.com/wzjs/524633.html

相关文章:

  • 跨境电商平台怎么做seo推广效果
  • 做直播网站需要什么资质seo价格查询公司
  • 建立网站的软件下载收录入口在线提交
  • 广州中英文网站建设企业门户网站
  • 网站建设的一般步骤包括百度推广优化是什么意思
  • 设计公司网站建设模板图百度推广网址是多少
  • 网页设计代码全过程seo有什么作用
  • 做网站教程csdn黑帽seo培训
  • 阿里云网站建设教学视频教程seo哪家好
  • 企业网站架构企业网络营销策划案
  • 怎样把网站上传到空间电商网站建设公司
  • 沈阳成创网站建设公司友情链接代码模板
  • vb链接网站怎么做朋友圈营销
  • 销售公司怎么做网站竞价推广托管公司介绍
  • 平台类网站建设公司地推
  • 南京协会网站建设台州seo
  • 教育行业网站怎么做百度网盘搜索引擎入口
  • 网站编辑超链接怎么做网站keywords
  • 建设工程东莞网站建设技术支持seo免费优化软件
  • 做ppt的模板的网站有哪些内容中国网站排名网官网
  • wordpress资讯站苏州网站制作
  • 安徽省质量提升工程建设网站免费建站的网站
  • 怎么用上线了做网站网络优化
  • 企业品牌网站建设方案电子商务主要学什么就业方向
  • 网站建设不能在淘宝发布网络推广平台收费不便宜
  • 如何申请网站优化工作交换免费连接
  • ecs wordpress太慢无锡网络优化推广公司
  • wordpress日主题v3.2破解广州百度seo排名优化
  • 大学做视频网站设计附近学电脑培训班
  • 温州 网站建设百度识图以图搜图