Oracle SQL 查询语句分析及动态时间参数传递
上面的 Oracle 数据库 SQL 查询语句的意思是:从 'v_queue_number_record' 表和 'v_dai_dept' 表中,根据 'dept_code' 字段进行连接,查询条件为 'v_queue_number_record' 表中 'state' 字段为 2,且 'queue_time' 字段的年月部分与当前日期的年月部分相同。然后按照 'v_dai_dept' 表中的 'dept_name' 字段进行分组,统计每个部门的不重复的 'queue_id' 数量,并按照数量从高到低进行排序。
要在 mapper.xml 文件中动态传递时间参数,可以使用 MyBatis 的参数注解 @Param。首先在 Mapper 接口中定义一个方法,方法的参数使用 @Param 注解来指定参数名称。然后在 mapper.xml 文件中使用 #{} 占位符来引用参数值。
例如,在 Mapper 接口中定义一个方法:
List<Map<String, Object>> getQueueCountByDeptName(@Param("date") String date);
在 mapper.xml 文件中使用参数:
<select id="getQueueCountByDeptName" resultType="java.util.Map">
select u_zndt_hbv2.v_dai_dept.dept_name, count(distinct u_zndt_hbv2.v_queue_number_record.queue_id)
from u_zndt_hbv2.v_queue_number_record
join u_zndt_hbv2.v_dai_dept on u_zndt_hbv2.v_queue_number_record.dept_code = u_zndt_hbv2.v_dai_dept.dept_code
where u_zndt_hbv2.v_queue_number_record.state = 2
and replace(substr(u_zndt_hbv2.v_queue_number_record.queue_time, 1, 7), '-', '') = to_char(to_date(#{date}, 'yyyyMM'), 'yyyyMM')
group by u_zndt_hbv2.v_dai_dept.dept_name
order by count(distinct u_zndt_hbv2.v_queue_number_record.queue_id) desc
</select>
在调用 Mapper 接口的方法时,传入对应的时间参数即可:
String date = new SimpleDateFormat("yyyyMM").format(new Date());
List<Map<String, Object>> result = mapper.getQueueCountByDeptName(date);
原文地址: https://www.cveoy.top/t/topic/qwrC 著作权归作者所有。请勿转载和采集!