Mybatis的常用操作(结合工作总结)

1.forEach标签的使用

foreach元素的属性主要有item,index,collection,open,separator,close。

  • item:集合中元素迭代时的别名,

  • index:集合中元素迭代时的索引

  • open:常用语where语句中,表示以什么开始,比如以'('开始

  • separator:表示在每次进行迭代时的分隔符,

  • close 常用语where语句中,表示以什么结束,

在使用foreach的时候最关键的也是最容易出错的就是collection属性,该属性是必须指定的,但是在不同情况下,该属性的值是不一样的,主要有一下3种情况:

  • 如果传入的是单参数且参数类型是一个List的时候,collection属性值为list .

  • 如果传入的是单参数且参数类型是一个array数组的时候,collection的属性值为array .

如果传入的参数是多个的时候,我们就需要把它们封装成一个Map了,当然单参数也可以封装成map,实际上如果你在传入参数的时候,在MyBatis里面也是会把它封装成一个Map的,map的key就是参数名,所以这个时候collection属性值就是传入的List或array对象在自己封装的map里面的key

关于第三条的mybatis的官方说法:

所以,不管是多参数还是单参数的list,array类型,都可以封装为map进行传递。如果传递的是一个List,则mybatis会封装为一个list为key,list值为object的map,如果是array,则封装成一个array为key,array的值为object的map,如果自己封装呢,则colloection里放的是自己封装的map里的key值

代码实例:

2.concat模糊查询

那面下面有个小坑,不知道诸位遇到过没

用contact的时候,如要要查询的字段内容包含%,这就没办法查出来,我们需要自己处理下

3.choose (when, otherwise)标签

choose标签是按顺序判断其内部when标签中的test条件出否成立,如果有一个成立,则 choose 结束。当 choose 中所有 when 的条件都不满则时,则执行 otherwise 中的sql。类似于Java 的 switch 语句,choose 为 switch,when 为 case,otherwise 则为 default。

例如下面例子,同样把所有可以限制的条件都写上,方面使用。choose会从上到下选择一个when标签的test为true的sql执行。安全考虑,我们使用where将choose包起来,放置关键字多于错误。

4selectKey标签

在insert语句中,在Oracle经常使用序列、在MySQL中使用函数来自动生成插入表的主键,而且需要方法能返回这个生成主键。使用myBatis的selectKey标签可以实现这个效果。 
 下面例子,使用mysql数据库自定义函数nextval('student'),用来生成一个key,并把他设置到传入的实体类中的studentId属性上。所以在执行完此方法后,边可以通过这个实体类获取生成的key。

还有一些常用的标签:如if,set,where....我觉得没必要一一介绍了,直接用mybatis提供的逆向工程即可,下个月直接分享mybatis的源码分析,附录视频相赠哦,关注即送

猜你喜欢

转载自blog.csdn.net/oldshaui/article/details/84302425