public interface MyBaseMapper<T> extends Mapper<T>, MySqlMapper<T>,MyInsertListMapper<T> { },public interface UserMapper extends MyBaseMapper<User> { @Insert("INSERT INTO user (id, session_key, nickname, role, phone_number, create_time, update_time) VALUES (#{user.id}, #{user.sessionKey}, #{user.nickname}, #{user.role}, #{user.phoneNumber}, #{user.createTime}, #{user.updateTime}); " + "INSERT INTO user_account (user_id, password, create_time, update_time) VALUES (#{userAccount.userId}, #{userAccount.password}, #{userAccount.createTime}, #{userAccount.updateTime})") void insertUserAndAccount(@Param("user") User user, @Param("userAccount") UserAccount userAccount); }报错The bean 'userInfoMapper' could not be injected as a 'com.ruifan.taihaolian.biz.mapper.UserMapper' because it is a JDK dynamic proxy that implements: com.ruifan.taihaolian.lib.MyBaseMapper
时间: 2024-03-28 12:42:26 浏览: 19
根据你提供的代码,可以看出 'UserMapper' 接口继承了 'MyBaseMapper' 接口,而 'MyBaseMapper' 接口又继承了 'Mapper'、'MySqlMapper'、'MyInsertListMapper' 这三个接口,这些接口都与 MyBatis 有关系。另外,从你的错误提示中可以得知,'UserMapper' 接口使用了 JDK 动态代理进行了实现。
可能出现这个问题的原因是在 Spring 容器中配置了多个实现了 'UserMapper' 接口的 Bean,而 Spring 无法确定要注入哪个 Bean。解决方法是明确指定要注入的 Bean,可以在 'UserMapper' 接口上添加 '@Qualifier' 注解,指定要注入的 Bean 的名称。
例如,如果你的 'UserMapper' Bean 的名称为 'userMapper',则可以在 'UserMapper' 接口上添加 '@Qualifier("userMapper")' 注解,代码如下:
```
public interface UserMapper extends MyBaseMapper<User> {
@Insert("INSERT INTO user (id, session_key, nickname, role, phone_number, create_time, update_time) VALUES (#{user.id}, #{user.sessionKey}, #{user.nickname}, #{user.role}, #{user.phoneNumber}, #{user.createTime}, #{user.updateTime}); " +
"INSERT INTO user_account (user_id, password, create_time, update_time) VALUES (#{userAccount.userId}, #{userAccount.password}, #{userAccount.createTime}, #{userAccount.updateTime})")
void insertUserAndAccount(@Param("user") User user, @Param("userAccount") UserAccount userAccount);
}
```
然后在需要注入 'UserMapper' 的地方使用 '@Autowired' 和 '@Qualifier' 注解,代码如下:
```
@Autowired
@Qualifier("userMapper")
private UserMapper userMapper;
```