Mybatis中mapper文件传参方式(2种方式)

本文探讨了Mybatis中mapper文件的两种传参方式,包括使用@Param注解和不使用的情况。通过示例代码说明了@Param注解在处理多个对象参数和避免字段名冲突时的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

很长时间没有研究Mybatis了,之前工作Hibernate框架用的较多一些,今天遇到一个有趣的问题,话不多说,直接上代码:

public interface BusinessDepartmentMapper {

    Long insert(@Param("record")BusinessDepartment record);

    Long updateByPrimaryKey(BusinessDepartment record);
}

这里定义了一个mapper接口,可以明显看到,一个使用了@Param注解,一个原生。区别在哪儿呢?看一下mapper.xml文件:

 <insert id="insert" parameterType="com.jd.pops.merchantmaster.domain.model.BusinessDepartment" useGeneratedKeys="true" keyProperty="record.id">
    insert into fms_merchantmaster_bu (id, bu_id, bu_name, 
      yn, sys_version, create_pin, 
      create_date, update_pin, update_date
      )
    values (#{record.id}, #{record.buId}, #{record.buName},
      #{record.yn}, #{record.sysVersion}, #{record.createPin},
      #{record.createDate}, #{record.updatePin}, #{record.updateDate}
      )
  </insert>


<update id="updateByPrimaryKey" parameterType="com.pops.BusinessDepartment" >
    update fms_merchantmaster_bu
    set bu_id = #{buId},
      bu_name = #{buName},
      yn = #{yn},
      sys_version = #{sysVersion},
      create_pin = #{createPin},
      create_date = #{createDate},
      update_pin = #{updatePin},
      update_date = #{updateDate}
    where id = #{id}
  </update>

大家可以看到,在使用了@Param注解以后,Sql中必须是打点调用字段名,才可以正确使用,而不适用@Param则灵活许多,可以使用打点,也可以不使用。但为什么还要有@Param注解呢?因为不使用注解,只能传入一个对象参数,试想,如果传入多个对象,并且,对象中有相同的字段名呢?所以Mybatis帮助我们进行了封装,在规范上实现了统一;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值