Mybatis接收参数的几种方式总结

当Mybatis中只有一个基本类型参数时,只能够使用 #{参数名} 来取参数,而不能够直接使用 ${参数名} 来取参数,否则会报错,如下:

mapper interface:
public interface Works1Mapper extends Mapper {

   List batSelect(String ids);
}
mapper xml

如果必须使用 ${ids} 的话

1.可以使用 ==_parameter== 作为替代。

(注:mybatis中内置了 ==_parameter== 参数来代替参数名)

正确的写法是:


2.使用 @Param 注解

当使用了 @Param 注解时,${ids} 和 #{ids} 都可以使用

mapper interface:
public interface Works1Mapper extends Mapper {

   List batSelect(@Param("ids")String ids);
}
mapper xml

@Param注解也可以给参数起别名,例如:

public interface Works1Mapper extends Mapper {

   List batSelect(@Param("aaaaa") String ids);
}

3.获取对象中的值

如果传入的参数类型为JavaBean对象,那么获取值有两种方式

mapper interface:
public interface Works1Mapper extends Mapper {

   List batSelect(Works1 works);
}

第一种,直接使用对象内的属性取值,如Works1对象中有个id属性.这时候#{}和${}都不会报错


第二种,使用@Param注解

public interface Works1Mapper extends Mapper {
   List QueryAllByBean(@Param("wk") Works1 works);
}

4.#{} 和 ${} 的区别

用#{}取值时会默认加上双引号 ' '

order by 'name' desc

用${}取值则不会转义,而是会原样输出

order by name desc

由于${}有可能会引起Sql注入问题,所以尽量使用#{}

你可能感兴趣的:(Mybatis接收参数的几种方式总结)