晋南讲堂之持久层框架Mybatis—(六)mybatis的参数处理

1.单个参数

  当传递单个参数的时候,则#{}里的值可以随意写,如下所示,就算写成idefb它也能正确传输数据。
晋南讲堂之持久层框架Mybatis—(六)mybatis的参数处理
晋南讲堂之持久层框架Mybatis—(六)mybatis的参数处理
晋南讲堂之持久层框架Mybatis—(六)mybatis的参数处理

1.多个参数

  在EmployeeMapper.java接口中新增如下抽象方法用以测试mybatis如何处理多个参数:
晋南讲堂之持久层框架Mybatis—(六)mybatis的参数处理
  mybatis会把多个参数封装成一个map,它的key是从param1,param2,…paramN,或者arg0,arg1,…,argN-1,而value就是我们要传入的参数的值,即#{ }就是从map中获取指定key的value。sql映射文件如下所示:
晋南讲堂之持久层框架Mybatis—(六)mybatis的参数处理
  或者采用如下的形式:
晋南讲堂之持久层框架Mybatis—(六)mybatis的参数处理
  都能得到如下的正确结果,测试类中的代码如下:
晋南讲堂之持久层框架Mybatis—(六)mybatis的参数处理
晋南讲堂之持久层框架Mybatis—(六)mybatis的参数处理
  但是采用arg0,arg1,param1,param2这种方式是不直观的,有的时候参数过多导致不好区分,所以推荐采用命名参数的方式,可以明确的指定map中的key。在接口的抽象方法中的形参列表里采用注解“@Param(" ")”来给参数命名。如下所示:
晋南讲堂之持久层框架Mybatis—(六)mybatis的参数处理
  则相应的sql映射文件中#{ }中的值可以改成如下,这样看起来可达到见名知意的效果。
晋南讲堂之持久层框架Mybatis—(六)mybatis的参数处理
  如果JavaBean中的参数特别多,则接口中的抽象方法的签名看起来很长:
晋南讲堂之持久层框架Mybatis—(六)mybatis的参数处理