宁武皇仁光九年锦文轩刻本《异闻录》载: 扶桑画师浅溪,居泰安,喜绘鲤。院前一方荷塘,锦鲤游曳,溪常与嬉戏。 其时正武德之乱,潘镇割据,战事频仍,魑魅魍魉,肆逆于道。兵戈逼泰安,街邻皆逃亡,独溪不舍锦鲤,未去。 是夜,院室倏火。有人入火护溪,言其本鲤中妖,欲取溪命,却生情愫,遂不忍为之。翌日天明,火势渐歇,人已不见。 溪始觉如梦,奔塘边,但见池水干涸,莲叶皆枯,塘中鲤亦不知所踪。 自始至终,未辨眉目,只记襟上层迭莲华,其色魅惑,似血着泪。 后有青岩居士闻之,叹曰:魑祟动情,必作灰飞。犹蛾之投火耳,非愚,乃命数也。 ————《锦鲤抄》

【为什么要用 @param注解】

 关于@param

 这个注解在刚刚学习java的时候常会用到,但是为什么要用呢?

关于@param这个注解的作用:

有一种观点是使用@param可以和xml配置中的#{xxx} 对应,使用此注解后 ${}将无效,不过${}这种有sql注入的风险,现在用#{}才是主流(所以从这点上来看,所谓防sql注入并不是@param的功劳);

另外一种观点就是对传入参数的申明(声明),比如接口传入2个参数,其命名与SQL语句中的#{xxx}不一致,那么参数的传递过程就会中断,因为不知道哪个参数是sql需要的。

可能这才是@param的主要作用,尤其是当你用注解代替xml配置时(见下图,用注解代替xml大概就是这样子)

 

 

眼见为实

  测试工具 :postman 本地测试:

  @RequestMapping("public/v1/{organizationId}/users")

  进行测试,大概三种情况:

控制层函数:

 

mapper.xml文件

 

① :不使用@param注解,传参为name和userName:发现是可以成功查询的

 

 

② :不使用@param,变更接口参数name为name2,会报错,发现获取不到name这个参数

 

 

③: 使用@param注解,接口参数依旧用②中的name2,发现可以正常查询到

 

总结:

  总的来说,@param可以帮助接口传递参数给mapper文件,可以允许参数名有小小的不一致(但是我为什么要字段不一致来给自己找麻烦...);

另外缺点也比较明显,参数多的时候就不太好一个个加注解了,又臭又长(bushi),可以根据需求考虑用dto,vo来传递多个参数。所以,@param似乎并不是很重要。。(如果有我理解错的地方也可以评论告诉我,毕竟某也只是个萌新)

 

posted @ 2021-09-27 20:41  哒布溜  阅读(2220)  评论(0编辑  收藏  举报