mybatis的dao中@param注解

来源:互联网 发布:上海楼市成交数据 编辑:程序博客网 时间:2024/06/05 19:17

面试被问到mybatis中的param注解,以前没注意,今天记录下


如果dao的方法中只有一个参数,比如这样

没有注解

public java.util.HashMap<String, Object> get1(String uname);

那么在mapper中,以下写法都可以

select * from t_user where uname = #{0}

select * from t_user where uname = #{uname}

select * from t_user where uname = #{aaa}

第一个好理解,就是获得第1个参数。第二个和第三个其实一样,sql中的参数名不是必须和dao中的一致,可以随便写。


如果带有注解

public java.util.HashMap<String, Object> get1(@Param("uname")String uname);

那么只能这样写

public java.util.HashMap<String, Object> get1(@Param("uname")String uname);

mapper里的变量名必须是注解里的名称,其他的都不行,即使用顺序#{0}也不可以。


如果是多个参数

不带注解

public java.util.HashMap<String, Object> get2(String uname,String pword);

只能通过#{0},#{1}采用序号访问,其他的都不行,即使#{uname},#{pword}也不可以。


带注解

public java.util.HashMap<String, Object> get3(@Param("uname")String uname,@Param("pword")String pword);

那就只能通过  #{注解名}  去访问了。

原创粉丝点击