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

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

public interface BusinessDepartmentMapper {

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

    Long updateByPrimaryKey(BusinessDepartment record);
}

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

 
    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}
      )
  



    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}
  

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

你可能感兴趣的:(mybatis)