MyBatis传入参数为List对象的实现
SSM框架是JavaWeb必学的框架,虽说基本的增删改查很简单,但是当面临一些特殊情况时,有时还是会显得手足无措,此篇用来记录一些特殊场景下Mybatis框架的应用.
传入参数为List对象
1.场景复现
首先有如下一张表:
MySQL[test]>select*fromt_entry_resource; +----+-------------+------+----------+--------+--------+---------------------+ |id|resource_id|type|title|banner|icon|add_date| +----+-------------+------+----------+--------+--------+---------------------+ |11|6|14|分类|1.jpg|2.jpg|2017-11-1711:22:30| |12|3|1|测试12|3.jpg|4.jpg|2017-11-1711:22:30| |13|653|1|测试34|5.jpg|6.jpg|2017-11-2002:32:26| |14|1|1|测试5|7.jpg|8.jpg|2017-11-2002:32:51| |15|3942|3|测试6|9.jpg|10.jpg|2017-11-2002:34:27| +----+-------------+------+----------+--------+--------+---------------------+ 5rowsinset(0.01sec)
如果要根据resource_id和type来批量查询记录,该如何编写Mybatis语句?
2.解决方案
直接贴出来解决方案如下所示:
Dao层接口:
ListfindByRidAndType(List entryResources);
XML语句:
SELECT * FROM t_entry_resourcea WHERE (`type`=#{entryResources.type}andresource_id=#{entryResources.resourceId})
该语句利用了mybatis的foreach动态拼接SQL。
3.foreach属性
属性 | 描述 |
---|---|
item | 循环体中的具体对象。支持属性的点路径访问,如item.age,item.info.details。具体说明:在list和数组中是其中的对象,在map中是value。该参数为必选。 |
collection | 要做foreach的对象,作为入参时,List>对象默认用list代替作为键,数组对象有array代替作为键,Map对象用map代替作为键。当然在作为入参时可以使用@Param("keyName")来设置键,设置keyName后,list,array,map将会失效。除了入参这种情况外,还有一种作为参数对象的某个字段的时候。举个例子:如果User有属性Listids。入参是User对象,那么这个collection="ids"如果User有属性Idsids;其中Ids是个对象,Ids有个属性Listid;入参是User对象,那么collection="ids.id"上面只是举例,具体collection等于什么,就看你想对那个元素做循环。该参数为必选。 |
separator | 元素之间的分隔符,例如在in()的时候,separator=","会自动在元素中间用“,“隔开,避免手动输入逗号导致sql错误,如in(1,2,)这样。该参数可选。 |
open | foreach代码的开始符号,一般是(和close=")"合用。常用在in(),values()时。该参数可选。 |
close | foreach代码的关闭符号,一般是)和open="("合用。常用在in(),values()时。该参数可选。 |
index | 在list和数组中,index是元素的序号,在map中,index是元素的key,该参数可选。 |
4.foreach的几种用法
(1)selectcount(*)fromusersidin(x1,x2,x3,...)
selectcount(*)fromusers idin #{item.id,jdbcType=NUMERIC}
(2)selectcount(*)fromkey_colswherecol_a=?ANDcol_b=?
selectcount(*)fromkey_colswhere ${key}=#{item}
(3)select*fromt_newsnwheren.tagslike?orn.tagslike?
select*fromt_newsnwhere n.tagslike'%'||#{tag}||'%'
5.参考文献
https://www.cnblogs.com/dflmg/p/6398033.html
http://www.mybatis.org/mybatis-3/zh/dynamic-sql.html
到此这篇关于MyBatis传入参数为List对象的实现的文章就介绍到这了,更多相关MyBatis传入参数为List对象内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。