Mybatis提供了4种传递多个参数的方法:
1 Map
sql语句
接口
调用方法
这个方法虽然简单易用,但是存在一个弊端:Map存储的元素是键值对,可读性不好。
2 注解
使用MyBatis的参数注解@Param(org.apache.ibatis.annotations.Param)。
接口
sql语句
#{roleName}代表rolename参数,可读性较好。如果参数过多,那么使用注解方式的可读性就会不好。
3 #{order}
代码与2类似,只不过接口里面没有@Param注解,#{roleName}换为#{0},#{note}换为#{1},参数顺序依次递增,可读性不好。
4 JavaBean
当参数过多时,MyBatis允许组织一个JavaBean,通过set和get方法设置参数。
JavaBean
sql语句
接口
总结
1 Map和#{order}方式使可读性较差,在实际应用中应该废弃。
2 注解方式受到参数个数(n)的影响。当n<=4时,它是最佳的传参方式,比用JavaBean更加直观;当n>4时,太多参数将给调用带来困难,可读性不好,使用JavaBean方式。
参考资料
《深入浅出MyBatis技术原理与实战》 P78-81