MyBatis(十五):@Param()注解()

  本篇文章为你整理了MyBatis(十五):@Param()注解()的详细内容,包含有 MyBatis(十五):@Param()注解,希望能帮助你了解 MyBatis(十五):@Param()注解。

  一、什么是@Param()注解

  我们来举个简单的例子,拿我们上一篇中查找的例子来说。

  先看原来的代码:

  

 @Select("select * from user where id=#{id}")

 

   User getUserByID(int id);

 

  很明显,这是一句根据id来进行查找的方法,我们去具体的测试一下:

  

  测试通过没有问题。

  那么我们来加上@Param()注解,代码如下:

  

 //查

 

   @Select("select * from user where id=#{id}")

   User getUserByID(@Param("uid") int id);

 

  此时,我们再去测试一下看看结果:

  

  报错了,她说“id”没有找到,可用参数为“uid”,那么问题显而易见了,我们应该将SQL语句中的#{id}改为#{uid},也就是注解中的名字,如下:

  

 //查

 

   @Select("select * from user where id=#{uid}")

   User getUserByID(@Param("uid") int id);

 

  此时再去测试查看结果:

  

  这次就查找成功了。

  那么问题就来了,明明我们不用注解也能能够执行,为什么要注解呢?

  嗯,没错,我们这里是单个基本类型的确不需要@Param()注解就能运行,那么其他更加复杂的情况呢,比如说,多个基本类型?引用类型?

  下面我们就来深入探讨一下@Param()究竟该怎么用。

  二、@Param()的使用

  我们还是先开始实验。

  我们将代码修改为不止一个参数:

  对于传递多个参数我们前面已经提及了两种方法,一种是利用JavaBean,另一种是用Map,那么有没有考虑过不使用这两种方法直接传参可不可行呢?看下面的代码:

  

//查

 

   @Select("select * from user where id=#{id} and username=#{username}")

   User getUserByID(int id, String username);

 

  这里我们直接传递两个参数,进行测试:

  

  很遗憾地报错了,很明显这种方法是行不通的,那么我们去加上@Param()注释试一下,代码修改为以下内容:

  

 //查

 

   @Select("select * from user where id=#{id} and username=#{username}")

   User getUserByID(@Param("id") int id, @Param("username") String username);

 

  进行测试:

  

  

  嗯?竟然奇迹般地跑通了。

  以上都是举得直接在接口中注解SQL语句的例子,在Mapper.xml文件中@Param()同样使用,只需要注意的是,使用@Param()注解,parameterType属性就不用再设置了。

  三、总结

  简单总结一下:

  1.传入单个基本类型或String类型的时候,使用不使用@Param()注解都可以。

  2.需要传入多个参数时,有三种方法:JavaBean、@Param()注解、Map。个人认为优先使用JavaBean,当需要传入的数据较多但又不能完全将JavaBean利用起来的时候使用@Param()注解或Map。

  3.单个基本类型,SQL对应的就是传入参数的名字;使用JavaBean,SQL中对应的就是JavaBean在结果集映射的属性(没有显性映射就是默认的属性);使用@Param(),SQL中对应的就是@Param()注解中的名字;使用Map,SQL中对应的就是Map的键名。

  4.使用@Param()注解的时候,Mapper.xml文件无需再设置parameterType属性。

  

  (本文仅作个人学习记录用,如有纰漏敬请指正)

  

  以上就是MyBatis(十五):@Param()注解()的详细内容,想要了解更多 MyBatis(十五):@Param()注解的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: