数组数据通过sql语句转为数据库表衔接到from或join后进行直接或关联查询
日期: 2020-12-10 分类: 跨站数据 489次阅读
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
结语
通过以上的案例,其实就是一种特殊场景的使用而已,所以并不一定会使用到,这里只是自己记录一下。
除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog
精华推荐