玖叶教程网

前端编程开发入门

FIND_IN_SET 及IN 处理逗号间隔的字符串参数

最近做项目遇到个类似收藏的需求(不能被取消)涉及两个表 用户表sys_user 商品表goods,项目已经上线是二次开发 如果添加中间表就需要维护旧数据(不考虑) 表结构类似如下

一、

1.首先想到的是用 IN()

SELECT good_name FROM goods WHERE id IN (1,2,3,4)

2.使用GROUP_CONCAT()函数拼接结果

持久层用的mybatis 将字符串‘1,2,3,4’ 转化成(1,2,3,4)代码如下

最后

将XXXX替换成 上述代码结果就变成

注意红框 看到这我就有一种不好的预感

mybatis在使用foreach的时候最关键的也是最容易出错的就是collection属性

看了mybatis文档关于collection的说明 我就把上述代码给干掉了 -_-! (想知道结果,感兴趣的 可以试下 ,因为我也好奇能不能行得通)

二、

没错 我还有其他方法 就是FIND_IN_SET(param1, param2)函数

1 . FIND_IN_SET的定义可以看下方链接

https://www.cnblogs.com/mytzq/p/7090197.html

2. 当param1 是一个表的字段 类似IN(集合)

直接上结果

持久层代码中避免了感人的 foreach

让自己感动

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言