• 记录 mybatis plus QuerWapper使用 FIND_IN_SET


    1.需求:

        一条记录属于多个分类时,使用 MySQL 自带函数 find_in_set 实现多值匹配查询

    例如:

         查询楼盘名称为name=xxx,查询出楼盘ID为:1,2,3
        方案表存的是楼盘ID信息; real_estate_ids ={1,2,5,8,9} 这条记录里面,怎么在方案表查出楼盘为xxx的数据呢?

    2.分析:

     (1)表名 (crm_programme)

     

      (2).表字段楼盘ID(real_estate_ids)

    3.MySQL 提供的 find_in_set 函数,进行数据的查询
        find_in_set 用法:
        find_in_set(参数一,参数二)

     参数说明:

        参数一:想要查询的分类值,如 1
        参数二:方案表中的分类所存储的字段,如 real_estate_ids

    方案表(crm_programme) 楼盘ID,有多个,以英文 , 相隔,如 1,2,5,8,9


    # 查询 real_estate_ids = 1 or real_estate_ids = 3 的记录

    第一种方法:直接使用自定义查询语句,使用Mysql中的find_in_set 函数。

          SELECT * FROM `crm_programme` where find_in_set(1,real_estate_ids) or find_in_set(3,real_estate_ids);

    第二种方法:利用mybatis-plus的lambda().apply 拼接SQL,代码如下
      List  realIds = crmProgrammeService.getIdsByRealEstateNames(name);
      if (!CollectionUtils.isEmpty(realIds)){
                    if (realIds.size() == 1){
                        queryWrapper.like("real_estate_ids", realIds.get(0));
                    } else {
                        for (int i = 0; i < realIds.size(); i++) {
                            if (i == 0) {
                                queryWrapper.apply(null != realIds.get(i), "(find_in_set({0},real_estate_ids)", realIds.get(i));
                            } else {
                                if (i == realIds.size() - 1) {
                                    queryWrapper.or().apply(null != realIds.get(i), "find_in_set({0},real_estate_ids))", realIds.get(i));
                                } else {
                                    queryWrapper.or().apply(null != realIds.get(i), "find_in_set({0},real_estate_ids)", realIds.get(i));
                                }
                            }
                        }
                    }
     } else {
         queryWrapper.isNull("real_estate_ids");
     }

  • 相关阅读:
    MongoDB
    个人健康管理系统 JAVA开源项目 毕业设计
    什么专业越老越吃香?
    DCloud之Android原生工程配置
    含文档+PPT+源码等]精品微信小程序ssm家校通系统+后台管理系统|前后分离VUE[包运行成功]微信小程序项目源码Java毕业设计
    【网络安全】2023年堡垒机品牌大全
    Vulnhub系列靶机-Hackadmeic.RTB1
    css3 函数汇总(笔记)
    函数式编程:一等函数(First-class Function)
    SpringBoot接口 - 如何优雅的写Controller并统一异常处理?
  • 原文地址:https://blog.csdn.net/qq_34410726/article/details/126561485