使用@SelectProvider、@UpdateProvider、@InsertProvider和@DeleteProvider时,mapper层方法的参数是否必须写到Provider对用的方法参数中
时间: 2024-03-26 07:41:44 浏览: 13
是的,使用 @SelectProvider、@UpdateProvider、@InsertProvider 和 @DeleteProvider 时,mapper 层方法的参数需要写到 Provider 对应的方法参数中,否则在编译时会出现参数不匹配的错误。
例如,下面是一个使用 @SelectProvider 的例子:
```java
@SelectProvider(type = UserSqlProvider.class, method = "selectUsers")
List<User> selectUsers(UserQuery userQuery);
```
在 UserSqlProvider 类中,对应的 selectUsers 方法需要接收一个 UserQuery 类型的参数,这个参数与 mapper 层的 selectUsers 方法参数一致。
如果 mapper 层的方法参数与 Provider 对应的方法参数不一致,就需要使用 @Param 注解来明确指定参数名,例如:
```java
@SelectProvider(type = UserSqlProvider.class, method = "selectUsers")
List<User> selectUsers(@Param("userQuery") UserQuery userQuery);
```
在 UserSqlProvider 类中,对应的 selectUsers 方法需要接收一个名为 userQuery 的参数,这个参数与 @Param 注解中指定的参数名一致。
总之,mapper 层方法的参数必须要与 Provider 对应的方法参数一致,或者使用 @Param 注解明确指定参数名。