ibatis中传入的参数为数组的处理方法
来源:网络收集 点击: 时间:2024-03-13首先,使用如下经验引用中的建表及基础代码;在这个基础上,我们以查询多个特定学生成绩信息为例进行说明,如下传入数组ids={1,2},其中1和2代表某一学生的id值,并将该ids数组放入Map中作为ibatis查询的参数。

重新书写调取的sql,如下图中getScoreByIds查询方法,我们以常用的map传入参数,以一个实体类进行接收;而在查询sql中,我们以一个迭代器作做循环,读取ids数组中的值;

说明此处sql 的意义:首先,iterate标签证明该处使用一个迭代器对property进行循环,此处property赋值为ids,ids是我们传入的数组。

iterate标签还具有open和end这一对属性,如下面图中所示,左括号和右括号的赋值,代表该对属性的值是放在iterate循环的最外层,包住整个生成的sql。

conjunction属性,如下图所示,赋值为逗号,表示每次循环后,都加互购上该属性中的符号。

最后在iterate正负标签间填上取值,使用##进行取值,该处注意ids为数组,需要进行声明,因此该处赋值为#ids#。主要的原因是我是用map进行传参,map中参数为Object的泛型。因此该处需要再次声毙科诉明类型。

通过ibatis的解析,生成的sql为如下所示。

通过第一步中写好的测试main方法,使用debug方式运行,为了展示查询出的结果,在如下图的位置打上断点。目的是为了让程序停在该处,在控制台查看查询结果。

debug方式运行main方法,从如下控制台中可以看到,查询的数据scoreSumList中,证明该方法可行。

因数组可以与List可以相互转换,掌握了这种方式,即使传入糟帮的参数是List,也可以转换为数组再进行操作,当然直接传List进ibatis也是可行的,只需要将入参改为List类型,即用直接声明参数类型。
注意事项双#中该种方式必须声明数组类型,否则报错。
JAVAIBATIS数组传参IDEA版权声明:
1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。
2、本站仅提供信息发布平台,不承担相关法律责任。
3、若侵犯您的版权或隐私,请联系本站管理员删除。
4、文章链接:http://www.1haoku.cn/art_343647.html