当前位置:网站首页>一对多查询(分页)
一对多查询(分页)
2022-08-03 14:38:00 【唯*】
- 一对多查询(不用分页的情况)
使用mybatis的 collection
<collection property="多的属性名" ofType="多的实体类型" >
<result column="多的数据库字段" property="映射到实体类型"></result>
</collection>
eg 一个景区对应多张门票
<collection property="ticketVos" ofType="com.tengyun.dimall.common.vo.ticket.TicketVo">
<result column="bId" property="id"></result>
<result column="ticket_name" property="ticketName"></result>
</collection>
一对多查询不分页的情况下之间左连接多表即可
2. 一对多查询分页(第一种,细品)
SELECT
aa.ID,
aa.scenic_name,
aa.longitude,
aa.latitude,
aa.address,
aa.cover,
C.ticket_name,
c.cancel_rule,
c.available_type,
c.code as code,
e.NAME AS labelName,
d.special_price,
d.day_time
FROM
(
SELECT
a.*
FROM scenic a
<include refid="getTicketApiListByKeyWordsCondition"></include>
<bind name="start" value="ticketApiListQueryVo.fetchStart()"/>
<bind name="limit" value="ticketApiListQueryVo.fetchLimit()"/>
limit #{limit} offset #{start}
)aa
INNER JOIN ticket c ON c.scenic_id = aa.id and c.check_status = 1 and c.is_deleted = 0 and c.on_sale =1
LEFT JOIN ticket_price d ON c.ID = d.ticket_id and d.special_stock > 0
left JOIN scenic_label b ON b.scenic_id = aa.id
LEFT JOIN label e ON e.id = b.label_id
<sql id="getTicketApiListByKeyWordsCondition">
where a.check_status = 1 and a.is_deleted = 0
<if test="ticketApiListQueryVo.labelId != null">
and exists (select 1 from scenic_label r where r.label_id = #{ticketApiListQueryVo.labelId} and r.ticket_id = a.id)
</if>
<if test="ticketApiListQueryVo.keyWords != null and !''.toString().equals(ticketApiListQueryVo.keyWords)">
and (a.scenic_name LIKE concat ( '%', #{ticketApiListQueryVo.keyWords}, '%' )
or exists
( select 1 from ticket t
LEFT JOIN ticket_price d ON t.ID = d.ticket_id
where t.scenic_id = a.id and t.check_status = 1 and t.on_sale = 1
and t.is_deleted = 0 and d.special_stock > 0
<if test="ticketApiListQueryVo.dayTime != null">
and d.day_time = #{ticketApiListQueryVo.dayTime}
</if>
and t.ticket_name like concat ('%', #{ticketApiListQueryVo.keyWords}, '%')
)
)
</if>
边栏推荐
- 用1000行代码统计西安新房价格后,我有一个惊人的发现……
- PAT乙级-B1014 福尔摩斯的约会(20)
- 你把 vite打包 玩明白
- 输出1!+2!+3!+......+n!
- atrace和systrace的基本使用方法
- 2022-随便学学
- Role usage in Ansible
- 基于ModelArts的动漫头像自动生成丨【华为云至简致远】
- UE4 C disk cache solution
- Leetcode 448. Find All Numbers Disappeared in an Array to Find All Disappeared in an Array of Numbers (simple)
猜你喜欢
R7 6800H+RTX3050+120Hz 2.8K OLED屏,无畏Pro15 2022开启预售
Ansible中的角色使用
利用 NFT 释放网站的潜力
MMA安装及使用优化
[The Beauty of Software Engineering - Column Notes] 36 | What exactly do DevOps engineers do?
【问题】torch和torchvision对应版本
APT组织最喜欢的工具 Cobalt Strike (CS) 实战
动作条的多项复选
手摸手带你完成智慧路灯构建及避坑【华为云至简致远】
20220801使用安信可的ESP-01S模块实现WIFI的UART传输功能
随机推荐
node项目开发踩坑(一)
币圈提款机:Solana钱包出现未知安全漏洞 大量用户数字资产被盗
Controller层代码这么写,简洁又优雅!
Clickhouse Filling the Pit 3: Left Join changed to Right Join, resulting in incorrect statistical results
PAT乙级-B1015 德才论(25)
PAT乙级-B1016 部分A+B(15)
idea找不到class,gradle依赖已经加载,并且class可看
个人秋招记录——欢迎交流
PostgreSQL V14中更好的SQL函数
【报错】import cv2 as cv ModuleNotFoundError: No module named ‘cv2
PAT乙级-B1014 福尔摩斯的约会(20)
使用Jetty服务器和Axis2框架技术发布Webservice接口
【R语言科研绘图】--- 柱状图
varchar2和varchar2(char)_datetime数据类型
PostgreSQL 每周新闻 2022-7-27
图形学-粒子系统 (Particle System)
Taurus.MVC WebAPI 入门开发教程1:框架下载环境配置与运行(含系列目录)。
三元表达式实现多个条件的判断
【实战】Next.js + 云函数开发一个面试刷题网站
Huffman树