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、总结

  • 遇到问题,首先使用小黄鸭方法回顾一下自己写的代码逻辑
  • 去看报错位置,一般报错可以帮助你定位到自己想要的内容
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐