业务场景:表group_ids字段中包含以逗号分隔的多个id,需要判断该字段中是否包含传入的id值。

一、表数据

image.png
需要添加判断处理的代码,此处使用了mybatis-plus的wrapper组件:

  1. @PostMapping("list")
  2. fun groupList(@RequestBody saleGroupReq: SaleGroupReq): Result<IPage<SaleGroup>> {
  3. val result = Result<IPage<SaleGroup>>()
  4. val queryWrapper = QueryWrapper<SaleGroup>()
  5. val groups = saleGroupService.page(
  6. Page(saleGroupReq.getCurrentPage().toLong(), saleGroupReq.getPageSize().toLong()),
  7. queryWrapper
  8. )
  9. // TODO 此处需要添加判断role表中的group_ids字段是否包含group返回数据的id
  10. result.content = groups
  11. result.status = -1
  12. result.message = "SUCCESS"
  13. return result
  14. }

二、代码处理

  1. @PostMapping("list")
  2. fun groupList(@RequestBody saleGroupReq: SaleGroupReq): Result<IPage<SaleGroup>> {
  3. val result = Result<IPage<SaleGroup>>()
  4. val queryWrapper = QueryWrapper<SaleGroup>()
  5. val groups = saleGroupService.page(
  6. Page(saleGroupReq.getCurrentPage().toLong(), saleGroupReq.getPageSize().toLong()),
  7. queryWrapper
  8. )
  9. // 有id引用的情况下不允许删除
  10. groups.records.forEach { e ->
  11. val roleList = roleService.list(QueryWrapper<Role>().apply("FIND_IN_SET({0}, group_ids)", e.id))
  12. if (roleList.isNotEmpty()){
  13. e.delGroup = - 1
  14. }
  15. }
  16. result.content = groups
  17. result.status = -1
  18. result.message = "SUCCESS"
  19. return result
  20. }

三、函数详解

FIND_IN_SET(str, strlist)查询字段(strlist)中包含(str)的结果,返回结果为null或记录。

  • str:要查询的字符串
  • strlist:字段名 参数以 “,” 分隔,如 (1,2,6,8,10,22)
  1. 假如字符串str在由N个子链组成的字符串列表strlist 中,则返回值的范围在 1 到 N 之间。
  2. 如果str不在strlist 或strlist 为空字符串,则返回值为 0 。
  3. 如任意一个参数为NULL,则返回值为 NULL。
  4. 这个函数在第一个参数包含一个逗号(‘,’)时将无法正常运行。