mybatis foreach 动态插入sql语句
有一个需求是需要写如下的动态sql , ‘149’,‘145’ 这些个数的不确定的,
发布日期:2021-06-30 13:14:05
浏览次数:3
分类:技术文章
本文共 2738 字,大约阅读时间需要 9 分钟。
文章目录
那么就需要用到mybatis的foreach了.
需要在mybatis中传入数组进去. 网上大多数关于foreach的用法是关于in的循环的.如下但是上面的用法并不符合需求. 需要进行改造.
Model
首先在模型中,要有一个数组的属性
Service
在service层中,对模型的数组属性进行赋值
调用setLableIds方法public List> getFavAndList(FavModel model) { String lableId = model.getLableId(); String[] array = lableId.split(","); model.setLableIds(array); try { return favDao.getFavAndList(model); } catch (Exception e) { e.printStackTrace(); } return favDao.getFavAndList(model); }
dao
List> getFavAndList(FavModel model);
Mapper
其中foreach的写法如下
and tagSplit(s.lableids, ${value}) = 1
注意:
**在foreach的属性中,不需要写open="(" separator="," close=")". 其中collection中的值,要和model数组属性名对应上. ** item的value,就是${value},要对应上. 会把每次的数组变量的值,给赋值过去. 最后会形成如下的sql语句. 此处是加了where的标签. 因此第一个语句的前面是没有and的.tagSplit(s.lables, 137) = 1 and tagSplit(s.lables, 148) = 1 and tagSplit(s.lables, 147) = 1
也可以写成如下的sql
最后形成的sql语句如下额外的. 如果加了separator=",", 那么会导致在遍历sql的时候, 每句话,都加上逗号了.
完整的sql语句如下转载地址:https://javaweixin6.blog.csdn.net/article/details/84893046 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
关注你微信了!
[***.104.42.241]2024年04月20日 22时57分46秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
java.net.BindException: 无法指定被请求的地址
2019-05-01
scala list
2019-05-01
k8s设置阿里云仓库
2019-05-01
svn服务器安装
2019-05-01
spark 笔记1
2019-05-01
svn 没有作者信息) | (没有时间信息
2019-05-01
shell dirname basename
2019-05-01
未来已至,5G加持下的云游戏将走向何方?
2021-07-04
计算机网络 —— 网络层 1.
2021-07-04
Android生命周期
2021-07-04
Android进度条自定义——类似ProgressDialog效果的Dialog
2021-07-04
Android 之 ContentProvider 与 ContentResolver
2021-07-04
【接口自动化】
2021-07-04
SpringBoot搭建一个Web工程
2021-07-04
Spring Boot 安全框架 Shiro 入门
2021-07-04
如何用一句话激怒互联网人?
2021-07-04
用 Python 爬了点你们喜欢的电影
2021-07-04
推荐一位川大零基础转行 Python 的人生勇士
2021-07-04
讲真,做Python一定不要只会一个方向!
2021-07-04
Python 2大限来了!113天后自生自灭,官方不再维护更新
2021-07-04