首页 新闻 会员 周边

spring boot项目启动无误,访问网址时报错怎么解决?

0
悬赏园豆:5 [已解决问题] 解决于 2024-02-22 21:55

背景:

     这个是spring boot项目,做restful API。 编辑器是IDEA, 数据源是远程mysql5.7, 在idea里可以做表的怎删改查,连接配置应该没问题。

 

症状:

项目启动OK, 当访问:http://127.0.0.1:8089/skus/1  ,回车,编辑器控制报错:大致意思是找不到selectByPrimaryKey()方法。

 

网上搜了很多答案,说是mybatis配置问题,还有命名和包空间一致,还有空格问题... ...结果还是然并卵,这个报错怎么解决啊啊

 

 

 

 

 

控制台报错:

2023-10-19 18:56:46.414 ERROR 2846 --- [nio-8089-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.demo.api.service.SkuService.selectByPrimaryKey] with root cause
复制代码
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.demo.api.service.SkuService.selectByPrimaryKey
    at org.apache.ibatis.binding.MapperMethod$SqlCommand.<init>(MapperMethod.java:235) ~[mybatis-3.5.4.jar:3.5.4]
    at org.apache.ibatis.binding.MapperMethod.<init>(MapperMethod.java:53) ~[mybatis-3.5.4.jar:3.5.4]
    at org.apache.ibatis.binding.MapperProxy.lambda$cachedInvoker$0(MapperProxy.java:107) ~[mybatis-3.5.4.jar:3.5.4]
    at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1660) ~[na:1.8.0_372]
    at org.apache.ibatis.binding.MapperProxy.cachedInvoker(MapperProxy.java:94) ~[mybatis-3.5.4.jar:3.5.4]
    at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:85) ~[mybatis-3.5.4.jar:3.5.4]
    at com.sun.proxy.$Proxy60.selectByPrimaryKey(Unknown Source) ~[na:na]

... ...
复制代码
问题补充:
-------------------【增】10/20-----------------------------
找不到方法,因需要将“SQL语句映射注册到SqlSession中”,
所以需要在resources下新建xml文件,
编写如下形式的配置:
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  <property name="dataSource" ref="dataSource"/> 
  <property name="mapperLocations" value="classpath*:mybatis/*Mapper.xml"/>
</bean>

当然,也有配置mapperscan,如果在启动类上已有,酒不需要了。

但是问题好没解决,
一些基础的spring boot知识已购买黑马的书籍。
... ...

 

//SkuServiceImpl.java 
//----------------------------

package com.demo.api.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.demo.api.domain.Sku;
import com.demo.api.dao.SkuMapper;

import javax.annotation.Resource;

@Service
public class SkuServiceImpl implements SkuService {
    @Autowired
    @Resource
    private SkuMapper skuMapper;

    @Override
    public Sku selectByPrimaryKey(Integer id){
        return skuMapper.selectByPrimaryKey(id);
    }

//    @Override
//    public void addSku(Sku sku){
//        skuMapper.insertSelective(sku);
//    }
//
//    @Override
//    public void updateSku(Sku sku) {
//        skuMapper.updateByPrimaryKeySelective(sku);
//    }
//
//    @Override
//    public void deleteSku(Integer id) {
//        skuMapper.deleteByPrimaryKey(id);
//    }
}
Coca-code的主页 Coca-code | 初学一级 | 园豆:10
提问于:2023-10-19 20:17
< >
分享
最佳答案
0

在pom.xml配置文件的<build>标签中配置<resources>,并将 /dao/Mapper.xml配置

收获园豆:5
ASKANDANSWERS | 菜鸟二级 |园豆:220 | 2023-12-24 02:56
其他回答(6)
0

推荐一个比较接地气的springboot教程

智客工坊 | 园豆:1864 (小虾三级) | 2023-10-19 21:23

谢谢关注。

支持(0) 反对(0) Coca-code | 园豆:10 (初学一级) | 2023-10-20 21:03
0

json 数据来自远程云服务器

Coca-code | 园豆:10 (初学一级) | 2023-10-21 01:59
0

1.先测试其他方法是否能跑通,确定mapper的 xml配置文件被正确加载了。
2.再打断点debug。

Beyond-bit | 园豆:2885 (老鸟四级) | 2023-10-24 09:54
0

新手挺常见的问题,原因看是来是Mapper和xml的映射有问题,或者是参数有问题.建议不要手撸sql了,难以维护,升级困难,直接上mybatis-plus或tk-mybatis

隔壁曼玉 | 园豆:220 (菜鸟二级) | 2023-10-25 17:35

是这问题。我去看看那插件,谢谢。

支持(0) 反对(0) Coca-code | 园豆:10 (初学一级) | 2023-10-28 16:57
0

很明显。你的.xml文件在dao里面,但是你并没指定位置,老项目中一般会写个sql-map.xml去一一指定。新的都是放在resource了或者考虑使用mybatis-plus

景伟·郭 | 园豆:7 (初学一级) | 2023-10-27 14:47

谢谢关注,我去了解下。

支持(0) 反对(0) Coca-code | 园豆:10 (初学一级) | 2023-10-28 16:59
0

Invalid bound statement (not found): com.demo.api.service.SkuService.selectByPrimaryKey
检查一下 mybatis的sql和接口的绑定?

charler。 | 园豆:210 (菜鸟二级) | 2023-12-29 11:40
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册