这是我之前学习mybatis的时候一个盲点,是关于@param
的,我之前不是很明白这个注解的作用到底是干嘛的,我之前在用的时候,如果方法里的参数在两个及以上会用这个参数,但是不是很理解,今天搞明白了!
举一个例子:
<!--根据条件进行查询-->
<select id="findByCondition" parameterType="string" resultType="com.itheima.pojo.CheckGroup">
select * from t_checkgroup
<if test="value != null and value != ''">
where code = #{value} or name = #{value} or helpCode = #{value}
</if>
</select>
我们可以看到parameterType是string类型,我们可以看到下面传入条件全写的value,但我们可以看看我当时的参数是什么
Page<CheckGroup> findByCondition(String queryString);
这里我们参数列表里定义的是queryString,但是我们看到xml里面写的是value,这是因为parameterType是string类型的原因!我们可以看下String源码!
String源码里定义的这个value数组,所返回的就是这个value,所以这里的xml的写法,如果传入的参数类型是String的话,这种写法几乎是固定的!但反之,我们如果用了@param
注解,我们看源码:
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.PARAMETER})
public @interface Param {
String value();
}
我们可以看到,他这个注解里也是重写String返回的value的名字!所以这就是为什么两个及以上参数参数为什么要用@param指定下来!