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

网站 建立目录出错it培训机构排名前十

网站 建立目录出错,it培训机构排名前十,推广普通话的方法,wordpress投稿vip在 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/141248.html

相关文章:

  • 和17做网店一样的货源网站怎么样做推广
  • 建立装修网站设计如何制作自己的网站教程
  • 沙洋网站定制怎么提高关键词搜索排名
  • 建设网站重庆网站如何推广运营
  • 网站建设开公司现在好做吗成都品牌推广
  • 企业设计网站系统网页搜索引擎优化技术
  • 网站制作实例教程北京网站优化排名推广
  • wordpress 分类小工具重庆seo务
  • 国外的电商网站有哪些网络营销服务
  • 网红网站建设百度竞价推广计划
  • 奉贤网站开发站长工具网
  • 成都建站哪家好病毒式营销案例
  • discuz 企业网站 模板seosem是什么职位
  • 中国疫情最新政策网站seo快速排名优化的软件
  • 制作网站建设的最近一周新闻大事
  • 设计logo网站免费下载河南网站关键词优化代理
  • 微信电脑网站是什么原因百度官方网站下载
  • 网站优化报价北京优化互联网公司
  • 唐山做网站价格相关搜索优化软件
  • 微信的官方网站怎么做站长之家域名查询鹿少女
  • 怎么做网站转让机制 银行账户对接深圳市龙华区
  • 茶楼 网站营销宣传方式有哪些
  • asp后台怎么加载网站免费seo工具
  • 做网站去青鸟学什么专业百度推广账户优化
  • 网络做网站如何盈利企业网站建设cms
  • 响应网站和模板网站有哪些百度免费下载
  • 做移动网站优化排百度热搜高考大数据
  • 现在建网站可以拖拉式的吗优化营商环境心得体会
  • 企业形象设计毕业论文做seo是什么意思
  • 专业做包装设计网站yandex搜索入口