1、代码及问题描述
代码
- UserMapper
package com.atguigu.admin.mapper;
import com.atguigu.admin.bean.User;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
// @Mapper
public interface UserMapper extends BaseMapper<User> {
}
- UserService
package com.atguigu.admin.service;
import com.atguigu.admin.bean.User;
import com.baomidou.mybatisplus.extension.service.IService;
public interface UserService extends IService<User> {
}
- UserServiceImpl
ackage com.atguigu.admin.service.impl;
import com.atguigu.admin.bean.User;
import com.atguigu.admin.mapper.UserMapper;
import com.atguigu.admin.service.UserService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper,User> implements UserService {
}
错误代码:
2、解决过程
1、情况1
Invalid bound statement (not found): 无效的绑定语句(未找到),是由于mapper接口和对应的mapper.xml文件的时候,应该保证两个文件的文件名相同,所以处理方法有以下几种
- 检查namespace
- 检查id(注意不要有空格)
- xml没有扫描到
- 在yml或者properties文件中配置 mybatis.mapper-locations=classpath*:mapper/*Mapper.xml
2、情况2
我用的是mybatis-plus,就根本没有写xml,不存在xml映射不到的情况
所以我去回看报错,后面的报错信息是com.atguigu.admin.service.UserService.getBaseMapper,应该是无法获取的mapper,结果问题出在包扫描上
正常的包扫描
@MapperScan("com.atguigu.admin.mapper")
错误示范
@MapperScan("com.atguigu.admin.*")
是的我以为只用*就可以扫描到,结果需要精确的mapper包
3、总结
- 遇到问题,首先使用小黄鸭方法回顾一下自己写的代码逻辑
- 去看报错位置,一般报错可以帮助你定位到自己想要的内容