请求体
{
"studyId":"1613827502133317634",
"siteList":[
{
"siteId":"1613827981370298369",
"subjectNoList":["001", "002"]
},
{
"siteId":"1613827981689065474",
"subjectNoList":["003"]
}
],
"activeFlag":0
}
要实现的sql
WHERE study_id = 1613827502133317634
AND ((site_id = ? AND subject_no IN (?,?)) or (site_id = ? AND subject_no IN (?)))
AND active_flag = 0
用MyBatisPlus实现
QueryWrapper<CodeData> wrapper = new QueryWrapper<>();
wrapper.eq("study_id",searchCodeDataVO.getStudyId());
if(searchCodeDataVO.getSiteList()!=null && searchCodeDataVO.getSiteList().size()>0){
wrapper.and(wp -> {
for (Site site:searchCodeDataVO.getSiteList()){
wp.or( w -> {
w.eq("site_id", site.getSiteId());
if (CollectionUtils.isNotEmpty(site.getSubjectNoList())) {
w.in("subject_no", site.getSubjectNoList());
}
});
}
});
}
wrapper.eq("active_flag",0);