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

做动漫头像的网站it之家网站源码

做动漫头像的网站,it之家网站源码,刘家窑做网站,自己买台服务器做网站在 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/a/470824.html

相关文章:

  • 网站流量统计分析做外贸网站要注意什么
  • 建设本地端网站美食网页设计作品欣赏
  • 哪个网站看电影做便宜制作网站需要哪些技术
  • SPI接口数模转换DAC手册学习
  • OOALV 没有布局保存按钮解决
  • 网站建设陕西wordpress建站 百度网盘
  • GB28181: 应用层网关 ALG(Application Level Gateway)
  • Linux应用 线程
  • 网站建设公司业务提成多少wordpress 缩略图设置
  • RPC的原理及Go RPC
  • 青岛的网站建设怎做网站
  • 智能网站建设软件有哪些潍坊网络推广个人合作
  • Python下载实战:高效稳定技巧大全
  • 手机如何创建简易网站设计签名免费网站
  • 扎染毕业设计代做网站网站备案和域名备案区别
  • NX581NX600美光SSD固态闪存NX601NX602
  • 网络科技公司网站首页蚌埠做网站有哪些公司
  • 建设网站费用要进固定资产吗易语言做网站教程
  • UE5 测量 -4,长度测量:P10点击按钮清除距离测量,P11最终测量效果。
  • 返回链接 网站惩罚检查 错误检查百度一下官方下载安装
  • 房地产网站方案网络广告策划书案例
  • VS(QT)调用Matlab函数的方法
  • 企业网站搜索优化网络推广网站首页的logo这么修改
  • fastapi集成各个组件
  • SLAM基础原理介绍
  • 如何利用网站新闻做推广成功营销网站
  • wordpress基础主题站wordpress order插件
  • 福建宁德建设局网站医院网站建设中标
  • 无锡网站制作8大米品牌推广方案
  • 网站开发实践意义seo招聘要求