博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MyBatis多参数传递之混合方式——MyBatis学习笔记之十五
阅读量:6700 次
发布时间:2019-06-25

本文共 1483 字,大约阅读时间需要 4 分钟。

      在本系列文章的《》一文中,网友mashiguang提问如下的方法如何传递参数:public List findStudents(Map conditions, int page, int pageSize)。这是一种混合形式,亦即既有Map类型的参数,也有类似int这种普通类型的参数。经过一番摸索,笔者还比较顺利地找到了这种情况的处理方法。

      其实也很简单。在默认命名方式()一文中,介绍了MyBatis对参数的默认命名,这种命名在这种情况下依然有效。我们需要做的,就是如何根据这个命名读出Map中的参数值。这里就采用这种方式来实现教师分页查询。先修改映射器接口(TeacherMapper.java)中的教师分页查询方法的声明如下(完整源码下载:): 

//分页查询教师信息public List
findTeacherByPage(Map params, //查询条件int start, //起始记录int limit //记录条数);

 (代码1)

      那么MyBatis将会对此方法的三个参数依次命名为param1、param2和param3,其中第一个参数为Map类型,后两个参数为int类型。

      执行类(CollectionDemo.java)中的查询代码片段如下: 

Map
params =new HashMap
();//以name字段升序排序,params.put("sort", "name");params.put("dir", "asc");//查询职称为教授或副教授的教师params.put("title", "%教授");//查询教师分页信息List
teachers =//以name字段升序排序,从第0条记录开始查询。//查询2条记录mapper.findTeacherByPage(params,0, 2);

  (代码2)

      相应的映射配置(TeacherMapper.xml)文件片段如下: 

select * from teacher where teacher.title like#{param1.title} order by ${param1.sort} ${param1.dir} limit #{param2},#{param3}

 (代码3)

      在以上的映射文件中,使用#{param1.title}的形式就能访问Map中title属性的值。当然,在order by子句中应使用${param1.sort}的形式(可参见本系列博文中的“”一文,第二部分“可能会遇到的错误”第一个就是关于order by的。不过经笔者验证,在本例中使用“#”也是可以的)。由此我们可以总结出,我们使用#{参数默认命名.属性名}的形式,就可以在映射文件访问Map参数的属性值。

      运行结果如下: 

       显然,如果使用注解的方式,给参数指定名称(关于注解方式传递多个参数,请参考本系列的博文:),亦可使用上述形式来访问Map中的属性值,在此不再赘述(采用注解时,访问Map中的属性的源码,请到此处下载:)。

      总结:在《》一文中,笔者提出的学习方法之一是“善于猜想”。而本次问题的解决,笔者并没有找到相关的参考资料,只是凭借着自己的猜想和编程验证。这说明,猜想是管用的。

      

       MyBatis技术交流群:188972810,或扫描二维码:


【MyBatis学习笔记】系列之十五:MyBatis多参数传递之混合方式

转载地址:http://djloo.baihongyu.com/

你可能感兴趣的文章
Word 2010 插入其他文件的方法
查看>>
BZOJ4766: 文艺计算姬(Prufer序列)
查看>>
ECMAScript 5 —— 单体内置对象之Global对象
查看>>
AGC 018E.Sightseeing Plan——网格路径问题观止
查看>>
174. Dungeon Game
查看>>
C语言标准库
查看>>
pip安装包
查看>>
hibernate5.x版本org.hibernate.MappingException: Unknown entity问题
查看>>
linux每日命令(18):whereis命令
查看>>
discuz的安装
查看>>
《算术探索》(高斯) 第14目
查看>>
Python模块——hashlib
查看>>
本周学习小结(18/03 - 24/03)
查看>>
猜数游戏
查看>>
ssm整合的springmvc.xml的配置
查看>>
hibernate持久化对象,
查看>>
Android笔记之引用aar
查看>>
【题解】大中小括号匹配
查看>>
JS-取出字符串中重复次数最多的字符并输出
查看>>
Windows server 2012同时进行多个会话登陆的策略设置
查看>>