欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

数组数据通过sql语句转为数据库表衔接到from或join后进行直接或关联查询

程序员文章站 2024-01-11 15:42:10
Mybatis之数组数据通过sql语句转为数据库表衔接到from或join后进行直接或关联查询外部数据当前项目表格数据(表名:service_info)将外部数据转为Table表格,与service_info关联查询结语标题很绕,我也没想好怎么命名,所以这里详细说明一下。某些数据可能并不是存储到当前项目的数据库中,所以我们无论通过合种方式获取到的数据,都需要进行当前项目的某些业务模块的表进行关联,如果我们不想通过程序进行关联,只需要将这些数据通过sql语句转换为数据库表,然后再与当前项目的业务模块的数...

Mybatis之数组数据通过sql语句转为数据库表衔接到from或join后进行直接或关联查询

标题很绕,我也没想好怎么命名,所以这里详细说明一下。
某些数据可能并不是存储到当前项目的数据库中,所以我们无论通过合种方式获取到的数据,都需要进行当前项目的某些业务模块的表进行关联,如果我们不想通过程序进行关联,只需要将这些数据通过sql语句转换为数据库表,然后再与当前项目的业务模块的数据库表进行关联查询(JOIN等),这样查询会省去自己分页、排序等麻烦的操作,使用Mybatis的分页、排序等功能就可以,方便很多,废话不多说,看案例吧。

外部数据

[
	{
		serviceId: '001',
		callTime: 100,
		failureTime: 3,
		successTime: 97,
		health: 0.97
	}, {
		serviceId: '002',
		callTime: 300,
		failureTime: 30,
		successTime: 270,
		health: 0.98
	}, {
		serviceId: '003',
		callTime: 500,
		failureTime: 60,
		successTime: 440,
		health: 0.89
	}
]

当前项目表格数据(表名:service_info)

[
	{
		id: '001',
		serviceName: '服务001'
	}, {
		serviceId: '002',
		serviceName: '服务002'
	}, {
		serviceId: '003',
		serviceName: '服务003'
	}
]

将外部数据转为Table表格,与service_info关联查询

以下是在Mybatis的xml文件中使用

select 
	si.id AS id,
	si.name AS name,
	tmp.success_time AS successTime,
    tmp.failure_time AS failureTime,
    tmp.call_time AS callTime,
    tmp.health AS health
from service_info si
left join (
	<foreach collection="list" item="item" index="index" separator="union">
       select
       '${item.service_id}' as id,
       '${item.successTime}' as success_time,
       '${item.failureTime}' as failure_time,
       '${item.callTimes}' as call_time,
       '${item.health}' as health
    </foreach>
) tmp on si.id = tmp.id   
order by success_time desc 

结语

通过以上的案例,其实就是一种特殊场景的使用而已,所以并不一定会使用到,这里只是自己记录一下。

本文地址:https://blog.csdn.net/weixin_39157014/article/details/110955917