报错信息如下: Invalid bound statement (not found): com.tech.transport.mapper.EmployeeMapper.selectOne
这是service层的接口实现类
@Service
@Transactional(readOnly = true,propagation = Propagation.SUPPORTS)
public class EmployeeServiceImpl extends ServiceImpl implements IEmployeeService {
@Override
public Employee login(String username, String password) {
return baseMapper.selectOne(new QueryWrapper<Employee>()
.eq("username",username)
.eq("password",password));
}
}
这是mapper
@Mapper
public interface EmployeeMapper extends BaseMapper {
}
这是controller
@RestController
public class LoginController {
@Autowired
private IEmployeeService employeeService;
@PostMapping("/login")
@ApiOperation(value = "登录接口" + "")
public AjaxResult login(@RequestBody Map<String,Object> params){
String username = (String) params.get("username");
String password = (String) params.get("password");
Employee employee = employeeService.login(username,password);
if(null!=employee){
//登录成功
return AjaxResult.me();
}
//登录失败
return AjaxResult.me().setSuccess(false).setMessage("用户名或密码错误!");
}
为什么调用的是basemapper的selectOne方法,但是会报错employeeMapper找不到selectOne
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
这个报错信息Invalid bound statement (not found): com.tech.transport.mapper.EmployeeMapper.selectOne
通常意味着MyBatis在运行时无法找到与指定方法相对应的SQL映射语句。尽管你的EmployeeMapper
接口继承了BaseMapper
,而BaseMapper
中应该已经包含了selectOne
方法,但问题可能出在以下几个方面:
Mapper Interface 未被扫描:确保你的EmployeeMapper
接口所在的包路径被MyBatis的扫描路径所覆盖。如果你使用的是Spring Boot或类似的框架,需要检查配置文件(如application.yml或application.properties)中是否正确设置了mybatis-plus.mapper-locations
或者mybatis.type-aliases-package
和mybatis.mapperLocations
等属性,以确保MyBatis能够扫描到你的Mapper接口。
依赖问题:确认你的项目中已经正确引入了MyBatis-Plus的相关依赖,并且版本兼容无误。有时候,依赖冲突也可能导致这样的问题。
编译或构建问题:确保你的Mapper接口以及相关XML映射文件(如果有的话)都被正确编译并打包到了最终的输出目录中。有时候IDE的构建设置或Maven/Gradle的配置问题可能导致某些资源没有被包含进来。
@Mapper注解与扫描策略:虽然你已经在EmployeeMapper
上使用了@Mapper
注解,但也要确保你的项目配置支持这种方式的自动扫描。如果使用了@ComponentScan或其他方式来管理Bean扫描,确保这些配置也包括了Mapper接口所在的包。
配置类中的bean定义:在一些情况下,如果自定义了MyBatis或MyBatis-Plus的配置类,请检查是否正确设置了SqlSessionFactory或MapperScannerConfigurer等,确保它们能正确识别和配置你的Mapper接口。
解决步骤建议: - 首先,检查项目的配置文件,确保Mapper接口的包路径被正确配置。 - 确认所有必要的依赖都已添加且版本兼容。 - 清理并重新构建项目,检查输出目录中是否有对应的Mapper接口类和可能的XML映射文件。 - 检查项目中是否存在自定义的MyBatis或MyBatis-Plus配置,确保这些配置正确无误。 - 如果以上均无误,尝试重启IDE和服务器,有时候缓存或进程状态也会导致此类问题。
希望这些建议能帮助你解决问题。