@Param注解的用法解析

本文详细解析了@Param注解在Mybatis中的两种使用方式:一是XML映射中利用注解传递复杂参数,二是JavaBean作为参数时的处理技巧。重点讲解了如何在SQL语句中引用和使用参数,并展示了不同参数类型下的操作示例。
摘要由CSDN通过智能技术生成

@Param注解的用法解析


在实际的开发中,经常会遇到多个接口参数的情况。在之前的例子中,我们都是将多个参数合并到一个JavaBean中,但是不可能每次都为不同的参数创建一个新的JavaBean,所以需要使用其他方式来传递多个参数,常见的方法有使用Map类型和使用@param注解。

一.xml形式

实例一 @Param注解单一属性
dao层示例

Public User selectUser(@param(“userName”) String name, @param(“userpassword”) Int password);

xml映射对应示例

<!--使用注解传递参数,这时是不涉及单独一个类型的,所以去掉parameterType属性-->
<select id=" selectUser" resultMap="BaseResultMap">  
    select  *  from user_user_t 
        where user_name = #{userName,jdbcType=VARCHAR} and user_password=#{userPassword,jdbcType=VARCHAR}  
</select>

注意:采用#{}的方式把@Param注解括号内的参数进行引用(括号内参数对应的是形参如 userName对应的是name);

在这里给参数配置@param注解后,Mybatis会自动将参数封装成Map类型,而@param注解的值会成为Map中的key,因此在sql中可以通过配置的注解值来使用参数。


实例二 @Param注解JavaBean对象
dao层示例

/**
* 根据用户ID和角色的enabled状态获取用户角色
* 
* @param user
* @param role
* @return
*/
List<SysRole> selectRolesByUserIdAndRoleEnabled(
		@Param("user")SysUser user,
		@Param("role")SysRole role
);

可以看到,经过@param配置后的参数在xml文件的sql中可以直接使用。但是当参数是JavaBean类型时,使用@param注解后就不能直接使用,而是要通过点取值的方式。
通过这样的方式来传递参数时,在sql语句中需要使用#{user.id}和#{role.enabled}从两个JavaBean中取出指定属性的值。

二.注解形式

1,使用@Param注解

当以下面的方式进行写SQL语句时:

    @Select("select column from table where userid = #{userid} ")
    public int selectColumn(int userid);

当你使用了使用@Param注解来声明参数时,如果使用 #{} 或 ${} 的方式都可以。当你不使用@Param注解来声明参数时,必须使用使用 #{}方式

    @Select("select column from table where userid = ${userid} ")
    public int selectColumn(@Param("userid") int userid);

在动态配置的时候使用到该参数的含义:当只有一个参数,可以使用@parameter,它就代表了这个参数,如果使用@Param的话,会使用指定的参数值userid1代替userid。

    @Select("select column from table where userid = ${userid1} ")
    public int selectColumn(@Param("userid1") int userid);
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值