关于为什么要用Mybatis中的@Param

    个人做的一些总结。首先引出问题,为什么要用@Param?

    Java没有保存形参的记录,例如queryAll(int offet,int limit) 就相当于queryAll(arg0,arg1),参数只能根据索引0

、1来进行区分。mybatis就提供了@Param这个注解来完成命名传入参数,这样mybatis才能通过参数名字将数

据传入#{}中。

    为说明问题举以下示例:

1.如果mapper接口里参数是两个普通参数;如下图

public List<student> selectuser(int pn ,String i);

  1. <select id="selectuser" resultType="com.user.entity.student">
  2. SELECT * FROM student
  3. where sname like concat(concat("%",#{1}),"%")
  4. LIMIT #{0} ,5
  5. </select>

    那么xml里只能用#{0},#{1}的方式,但这样的表达方法,无法表达出参数的意义,不利于后期的维护。 可以用@Param的注解来修饰参数。xml里看起来也比较方便,否则一堆0,1,2,3的真是难懂。

public List<student> selectuser(@Param(value = "page")int pn ,@Param(value = "str")String i);

  1. <select id="selectuser" resultType="com.user.entity.student">
  2. SELECT * FROM student
  3. where sname like concat(concat("%",#{str}),"%")
  4. LIMIT #{page} ,5
  5. </select>

2,如果传入的参数是基本类型参数和实体类对象。

public List<student> selectuser(@Param(value = "page")int pn ,@Param(value = "st")student student);

  1. <select id="selectuser" resultType="com.user.entity.student">
  2. SELECT * FROM student
  3. where sname like concat(concat("%",#{st.sname}),"%")
  4. LIMIT #{page} ,5
  5. </select>

3.如果传入的参数只有一个,基本上不用@Param这个注解了,因为只有一个参数MyBatis就不需要区分了,不像多个参数要区分谁是谁,所以正常用。

public List<student> selectuser(int pn);

  1. <select id="selectuser" resultType="com.user.entity.student">
  2. SELECT * FROM student
  3. <!--where sname like concat(concat("%",#{st.sname}),"%")-->
  4. LIMIT #{page} ,5

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值