首页 > 其他分享 >MP的双表合并查询

MP的双表合并查询

时间:2022-12-09 13:25:02浏览次数:41  
标签:modelControlVos 双表 getModelId 查询 modelControlVo wrapper modelEntity MP

1、双表合并查询

/*两表合并*/
public void te() {

    /*全选*/
    List<ModelEntity> modelEntities = modelDao.selectList(null);
    List<ModelControlVo> modelControlVos = new ArrayList<>();

    /*将查询得到的数据赋值给modelControlVos*/
    modelControlVos = modelEntities.stream().map(modelEntity -> {
        ModelControlVo modelControlVo = new ModelControlVo();
        modelControlVo.setModelId(modelEntity.getModelId());
        modelControlVo.setModelName(modelEntity.getModelName());
        modelControlVo.setModelType(modelEntity.getModelType());
        return modelControlVo;

    }).collect(Collectors.toList());

    /*获得所有的modelId并去重*/
    Set<String> modelIdSet = modelEntities.stream().map(modelEntity -> {
        return modelEntity.getModelId();
    }).collect(toSet());
    /*判断取出来的模型表有数据*/
    if (modelIdSet.size() > 0) {
        /*条件查询得到分数表的数据*/
        LambdaQueryWrapper<JssChainModelScore> wrapper = Wrappers.lambdaQuery();
        wrapper.in(JssChainModelScore::getModelId, modelIdSet);

        /*如果只要某一个属性,可以select*/
        /*wrapper.in(JssChainModelScore::getModelId, modelIdSet).select(JssChainModelScore::getModelId);*/
        List<JssChainModelScore> jssChainModelScores = jssChainModelScoreDao.selectList(wrapper);

        /*取出它的模型名和它本身作为map*/
        Map<String, JssChainModelScore> jssChainModelScoreMap = jssChainModelScores.stream().collect(Collectors.toMap(JssChainModelScore::getModelId, p -> p));

        /*遍历赋值*/
        for (ModelControlVo modelControlVo : modelControlVos) {
            JssChainModelScore jssChainModelScore = jssChainModelScoreMap.get(modelControlVo.getModelId());
            if (jssChainModelScore!=null){
                modelControlVo.setSynthesisAVGScore(jssChainModelScore.getSynthesisScore());
            }
        }
    }

2、双表合并查询-分页
在查询合并后,加入分页

    int pageSize = 2;
    int pageNo=3;
    int total = modelControlVos.size();
    int pafeSum = (total+pageSize-1)/pageSize;
    List<ModelControlVo> subList = modelControlVos.stream().skip((pageNo-1)*pageSize).limit(pageSize).collect(Collectors.toList());

3、一对一查询合并

/*单表合并*/
@Test
public void getOneMerge(){
    int Id = 1;
    LambdaQueryWrapper<CollectEntity> wrapper = Wrappers.lambdaQuery();
    wrapper.eq(CollectEntity::getId,Id);

    // 先查询用户信息
    CollectEntity collectEntity = collectDao.selectOne(wrapper);
    
    DetailEntity detailEntity = new DetailEntity();
    detailEntity.setCollectId(collectEntity.getId());
    System.out.println(detailEntity.toString());

}

标签:modelControlVos,双表,getModelId,查询,modelControlVo,wrapper,modelEntity,MP
From: https://www.cnblogs.com/brickMovingWorker/p/16968653.html

相关文章

  • 原生开发小程序 和 wepy 、 mpvue 对比
    1.三者的开发文档以及介绍:原生开发小程序文档:​​点此进入​​​ wepy开发文档:​​​点此进入​​​ mpvue开发文档:​​​点此进入​​2.三者的简单对比:以下用一张图来......
  • 备忘:Windows环境下查询端口被哪个应用程序占用
    现象分析昨天用着都正常,今天一开机就出现了这个提示,而且昨天也没有新安装任何软件通过netstat-aon|findstr*****可以查询占用此端口的应用程序的PID再去任务管理器里通过P......
  • 数据库原理 查询优化
    实现查询操作的算法1、选择(1)简单的全表扫描(2)索引扫描算法2、连接(1)嵌套循环算法对外层循环表上的每一个元组,检索其内层循环表中元组,检查其是否相等,满足连接条件输出。......
  • 【MySQL】将查询结果导出到一个文件
    (1)SQL示例如下,要将如下的SQL查询结果导出到一个txt文件,便于研发做结果内容的核对selectps_partkey,sum(ps_supplycost*ps_availqty)asvaluefromparts......
  • spring::注解开发@ComponentScan
    @ComponentScan@ComponentScan将@Controller@Service@Repository,@Component标识的类注入到spring容器这些相当于是<beanid=""class="">@ComponentScan相当于是xml......
  • es组合查询
    GETyi_cloud_ecs_monitor/_search{"query":{"bool":{"must":[{"match":{"instance_id":"i-88zcpeekx"}}],"filter":{"range":{"c......
  • 【工具推荐】喜马拉雅批量下载自动转化为mp3格式文件!
    该工具用于下载喜马拉雅歌曲资源,可以下载单个音频资源,也可以下载整个专辑.喜欢的请打个红心!!! 喜马拉雅批量下载自动转化为mp3格式文件windows版https://jscs.lanz......
  • No compiler is provided in this environment . Perhaps you are running on a jre r
    原因:mvn-v会发现mavenruntime是使用jre,mvn执行时会去找系统java环境,java在安装时会多出来一个文件夹配置到环境变量中,这个并不是jdk,解决:添加系统变量JAVA_HOME位jdk......
  • Win10编译Android版本的FFmpeg库
    OverridetheentrypointofanimageIntroducedinGitLabandGitLabRunner9.4.Readmoreaboutthe extendedconfigurationoptions.Beforeexplainingtheav......
  • Linux安装ffmpeg
    使用的机器是Ubuntu18.04下载安装环境进入官网http://ffmpeg.org/点击Download,找到适用自身系统的下载包,我这里下载的Ubuntu-Officialpackages得到一个ffmpeg_x.x.x.......