SpringMVC对于传入参数是数组形式的参数该怎样处理 20C

先跟大家介绍一下我之前的开发经验。之前做过一个简单查询展示的系统,输入一个人的一些资料,查询符合条件的数据,具体框架大概是这样:
如图,四个查询条件,输入相应的查询条件,会返回符合要求的结果。
图片说明

这是传入后台姓名、客户号、日期等参数的形式;
图片说明

这是后台controller的写法;
图片说明

这是实体类Bean的写法;
图片说明

这是Mapper的写法。
图片说明
现在小弟需要实现一个十分复杂的查询/筛选功能,需要将数据库中符合多个条件的结果全部返回过来。具体的界面是这样的;
图片说明
而对于传输的查询参数,对于同一名称的查询参数可能有多个值,因此查询参数是一个数组:
图片说明
图片说明
如图,像这样的形式,该如何修改后台的Bean、controller和mapper?还请大牛指点指点,谢谢!

4个回答

本来就支持数组参数,你直接在后台接就好了图片说明
查询时传入一个Mapper传一个bean,把数组参数作为bean的一个属性,在mapper.xml 文件里面 in 使用for循环把参数拼起来就好了

后台用request.getParameterValues('roleIds')可以获取到一个String数组的

FenTianShenHuo
焚天神火 回复SheldorWsy: 感觉你这些条件怎么看都像是单选框比较合适
接近 2 年之前 回复
FenTianShenHuo
焚天神火 回复SheldorWsy: 后台接收的是name,只有你的同一类CheckBox的name属性相同,后台就能接受这样的数组了
接近 2 年之前 回复
weixin_40158006
SheldorWsy 是在controller里面写吗?另外我用的是checkbox的class和id属性,要改成使用name和value么?
接近 2 年之前 回复

Spring MVC本来就支持数组参数,把bean的属性变成String[]类型就OK了。
不过你也可以通过debug看看,如果bean的PRD_NBR,crl_sts 和 end_dte三个属性写成String类型,传进来的参数值是啥样的。我要是没记错的话应该是一个字符串,内容是由数组里每个字符串拼接而成,中间用逗号隔开(例如图片里面的PRD_NBR,传进来的就是"CR026601,CR026101")。这样的好处是写Mapping的时候应该可以直接写成类似where 属性 in (),可以省去循环了
当然你也可以在页面端把这个数组拼接成方便写Mapping的字符串啦

图片说明
图片说明
可以参考这样的

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问