大想哥 2024-04-17 16:25 采纳率: 66.7%
浏览 8
已结题

MyBatis-plus快速开始报错

跟着Mybatis-plus官网中的快速开始执行的,会报下面的错误不知道如何解决

Java HotSpot(TM) 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended
----- selectAll method test ------

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.xxx.usercenter.mapper.UserMapper.selectList

我看有帖子说是mybatis的xml路径等问题,但是我目前跟官网走的话没碰到xml的内容。我看了一眼我有关user的引用都是正确的

@SpringBootTest
@RunWith(SpringRunner.class)
public class SampleTest {

    @Resource
    private UserMapper userMapper;

    @Test
    public void testSelect() {
        System.out.println(("----- selectAll method test ------"));
        List<User> userList = userMapper.selectList(null);
        Assert.isTrue(5 == userList.size(), "");
        userList.forEach(System.out::println);
    }

}
  • 写回答

3条回答 默认 最新

  • 码农阿豪@新空间代码工作室 Java领域优质创作者 2024-04-17 16:33
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    这个错误提示是因为Mybatis-plus无法找到对应的SQL语句。可以先检查一下以下几点:
    1. 确认Mapper接口的路径和名称是否正确,是否与实际的Mapper接口匹配。例如,这里的错误提示是找不到com.xxx.usercenter.mapper.UserMapper.selectList,那么就需要确认项目中是否存在 com.xxx.usercenter.mapper 这个包,以及对应的UserMapper接口中是否有名为selectList的方法。
    2. 确认Mapper接口中的方法名与SQL语句的id是否匹配。在Mybatis-plus中,Mapper接口的方法名应该与XML文件中定义的SQL语句的id一致。例如,如果SQL语句的id是selectList,那么对应的Mapper接口方法名也应该是selectList
    3. 确认SQL语句的id是否正确。在Mybatis-plus中,SQL语句的id是 XML 文件中定义的 id 属性值。例如,这里的错误提示是找不到com.xxx.usercenter.mapper.UserMapper.selectList,那么就需要确认对应的XML文件中是否存在 id 为selectList的SQL语句。
    4. 确认MapperScan的配置是否正确。在Mybatis-plus中,需要在项目的配置文件中配置MapperScan扫描Mapper接口的路径。例如,@MapperScan("com.xxx.usercenter.mapper") 就是扫描 com.xxx.usercenter.mapper 包下的所有Mapper接口。 案例: 可以根据具体的项目情况进行排查,下面是一个简单的案例:
    5. 确认Mapper接口路径和名称是否正确:
    @Repository
    public interface UserMapper extends BaseMapper<User> {
        List<UserDTO> selectUsersByRoleId(@Param("roleId") Long roleId);
    }
    
    1. 确认Mapper接口中的方法名与SQL语句的id是否匹配:
    <!-- UserMapper.xml -->
    <select id="selectUsersByRoleId" resultMap="userDTO">
        select u.*, ur.role_id
        from tb_user u
        inner join tb_user_role ur on u.id = ur.user_id
        where ur.role_id = #{roleId}
    </select>
    
    1. 确认SQL语句的id是否正确:
    @Service
    public class UserServiceImpl implements UserService {
        @Autowired
        private UserMapper userMapper;
        @Override
        public List<UserDTO> selectUsersByRoleId(Long roleId) {
            return userMapper.selectUsersByRoleId(roleId);
        }
    }
    
    1. 确认MapperScan的配置是否正确:
    @Configuration
    @MapperScan("com.xxx.usercenter.mapper")
    public class MybatisPlusConfig {
        @Bean
        public PaginationInterceptor paginationInterceptor() {
            return new PaginationInterceptor();
        }
    }
    

    以上仅是一个简单的例子,具体情况需要根据项目实际情况进行排查。

    本回答被专家选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 5月13日
  • 专家已采纳回答 5月5日
  • 创建了问题 4月17日

悬赏问题

  • ¥15 Kylin-Desktop-V10-GFB-Release-JICAI_02- 2207-Build14-ARM64.iso有没有这个版本的系统啊
  • ¥15 能不能通过蓝牙将传感器数据传送到手机上
  • ¥20 100元python和数据科学实验项目
  • ¥15 根据时间在调用出列表
  • ¥15 FastReport.community 编辑,table只显示“每页”最顶部和底部横线
  • ¥15 R 包chipseeker 安装失败
  • ¥15 Veeam Backup & Replication 9.5 还原问题
  • ¥15 vue-print-nb
  • ¥15 winfrom的datagridview下拉框变成了黑色,渲染不成功
  • ¥20 利用ntfy实现短信推送