• mybatis plus遇到invalid bound statement(not found)报错


    关注 码龄 粉丝数 原力等级 -- 被采纳 被点赞 采纳率 azusa~ 2024-04-14 21:42 采纳率: 25% 浏览 7 首页/ 后端 / mybatis plus遇到invalid bound statement(not found)报错 javaspring bootmaven 目前没有Mapper.xml文档,这个必须要配置吗?搜了很多都是说配置xml文档,或者改application.properties里面扫描Mapper.xml的位置,还有pom.xml加上〈resources〉全都试过了,都没用怎么办 收起 写回答 好问题 0 提建议 追加酬金 关注问题 微信扫一扫 点击复制链接 分享 邀请回答 编辑 收藏 删除 结题 收藏 举报 追加酬金 (90%的用户在追加酬金后获得了解决方案) 当前问题酬金 ¥ 0 (可追加 ¥500) ¥ 15¥ 20¥ 50¥ 100¥ 200 支付方式 扫码支付 二维码出错 点击刷新 支付金额 15 元 提供问题酬金的用户不参与问题酬金结算和分配 支付即为同意 《付费问题酬金结算规则》 结题 再想想 删除 再等等

    5条回答 默认 最新

    • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-14 21:42
      关注

      引自免费微信小程序:皆我百晓生

      面对invalid bound statement (not found)这样的错误,这通常意味着MyBatis Plus无法找到与你的Java接口对应的Mapper映射文件。然而,如果你的项目中确实没有Mapper.xml文件,并且你想要使用注解方式配置,那么你需要确保以下几个方面:

      1. Mapper接口: 你需要创建一个带有@Mapper注解的接口,例如:

        ```python
        import org.apache.ibatis.annotations.Select;
        
        @Mapper
        public interface UserMapper {
            @Select("SELECT * FROM user WHERE id = #{id}")
            User getUserById(Integer id);
        }
        
      2. 启用注解扫描: 在Spring Boot应用中,确保你在主启动类上启用了自动配置的Mapper扫描,这样Spring Boot会自动发现并注册这些接口。你不需要在application.properties中指定任何关于XML的路径。

        ```python
        import org.springframework.boot.SpringApplication;
        import org.springframework.boot.autoconfigure.SpringBootApplication;
        import com.baomidou.mybatisplus.extensionscanGlobal;
        import com.baomidou.mybatisplus.annotation.EnableScanGlobal;
        
        @SpringBootApplication
        @EnableScanGlobal(basePackages = "com.yourpackage.mapper") // 替换为你的包名
        public class Application {
        
            public static void main(String[] args) {
                SpringApplication.run(Application.class, args);
            }
        }
        
      3. MyBatis Plus依赖: 确保你的pom.xml文件已经包含了MyBatis Plus的依赖项,以及它的starter,例如:

        ```python
        
            
            
                com.baomidou
                mybatis-plus-boot-starter
                3.5.6
            
        
            
            
                mysql
                mysql-connector-java
                runtime
            
        
            
            
                org.springframework.boot
                spring-boot-starter-web
            
        
        
      4. 数据源配置: 你需要在application.propertiesapplication.yml中配置你的数据源信息,包括数据库URL、用户名和密码等。例如:

        spring.datasource.url=jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC
        spring.datasource.username=root
        spring.datasource.password=root
        spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
        
      5. 实体类: 对应于上述Mapper接口中的User对象,你需要有一个对应的User实体类,包含相应的字段和getter/setter方法。

        ```python
        public class User {
            private Integer id;
            private String name;
            // ... 其他字段及getter/setter方法
        }
        

      按照以上步骤进行设置后,你应该可以正常使用MyBatis Plus而不必创建Mapper.xml文件。如果你仍然遇到问题,请检查你的Spring Boot项目结构是否正确,以及是否存在其他潜在的配置错误。如果问题依然存在,提供更详细的错误日志将会有助于定位问题。

      展开全部

      评论 编辑记录
    • GISer Liu 2024-04-14 23:45
      关注

      该回答引用自GPT-3.5,由博主GISer Liu编写:

      根据您描述的情况,您遇到了MyBatis Plus报错"invalid bound statement not found"。这通常是由于MyBatis
      Plus无法找到对应的Mapper映射文件造成的。您提到没有Mapper.xml文档,但这并不是必须的,因为MyBatis
      Plus可以通过注解来进行Mapper的配置。
      下面我将提供一套解决方案,希望能帮助您解决这个问题:

      问题分析:

      1. 报错信息分析 :报错信息"invalid bound statement not found"表明MyBatis Plus无法找到指定的映射语句。
      2. 可能原因分析 :由于您没有Mapper.xml文件,可能是Mapper接口没有正确与SQL语句进行映射。

        解决方案:

      3. 使用注解配置Mapper :如果您不想使用Mapper.xml文件,可以考虑使用注解方式配置Mapper。在Mapper接口的方法上,通过@Select@Insert@Update@Delete等注解来配置SQL语句。确保Mapper接口中的方法名与SQL语句的id对应,这样MyBatis Plus就能正确找到映射关系了。
        javaCopy code
        @Mapper
        public interface UserMapper extends BaseMapper<User> {
        @Select("SELECT * FROM user WHERE username = #{username}")
        User findByUsername(String username);
        }
        
      4. 检查Mapper扫描配置 :如果您使用了Mapper扫描功能,确保扫描的路径是正确的。在application.properties中配置mybatis-plus.mapper-locations,指定Mapper.xml文件所在的路径。如果没有Mapper.xml文件,可以不用配置这个。
        propertiesCopy code
        mybatis-plus.mapper-locations=classpath:mapper/*.xml
        
      5. 检查Mapper接口命名规范 :确保Mapper接口命名规范正确,继承自BaseMapper并且按照驼峰命名法命名,如UserMapper对应user表。
      6. 检查是否启用了MyBatis Plus :在pom.xml中确保引入了MyBatis Plus的依赖,并且没有与其他持久化框架冲突。

        结论:

        通过以上方案,您应该能够解决MyBatis Plus报错"invalid bound statement not
        found"的问题。请根据您的实际情况选择合适的解决方案。如果问题仍然存在,您可能需要进一步检查您的代码配置,或者提供更多的相关信息以便于更详细的分析。

      如果该回答解决了您的问题,请采纳!如果没有,请私信联系或评论您的疑惑

      展开全部

      评论
    • 夜郎king 2022博客之星IT其它领域TOP 12 2024-04-15 08:52
      关注

      照着官方文档来跑一下代码,一般问题不大。

      评论
    • CSDN-Ada助手 CSDN-AI 官方账号 2024-04-16 03:30
      关注

      【相关推荐】




      如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
      评论
    • Kwan的解忧杂货铺 Java领域优质创作者 2024-04-16 14:04
      关注

      下午好🌅🌅🌅
      本答案参考ChatGPT-3.5

      遇到invalid bound statement(not found)报错通常是因为对应的Mapper接口的方法没有与Mapper.xml中的id对应上,解决方案如下:

      1. 确认Mapper接口中的方法名与Mapper.xml中的id是否一致,尝试修改

      2. 配置Mapper.xml,将其中的id与Mapper接口中的方法名对应即可

      3. 在配置文件中指明Mapper.xml的位置,确保Mybatis能够扫描到Mapper.xml文件。配置方式如下:

      
          classpath*:mapper/*.xml
      
      
      1. 确认是否引入了Mybatis Plus的依赖以及版本是否正确

      2. 确认数据库连接信息是否正确,包括数据库地址、端口号、用户名、密码

      3. 如果还是无法解决,可以尝试使用Mybatis Plus提供的自动生成Mapper.xml文件的工具,或者查看报错信息,定位问题所在。

      评论
    编辑
    预览

    报告相同问题?

  • 相关阅读:
    【MyBatis-Plus】快速精通Mybatis-plus框架—核心功能
    LeetCode 0167. 两数之和 II - 输入有序数组
    android知识点1之javascript和anroid之间的互相调用
    原型模式的学习
    kafka顺序读写磁盘分析
    策略梯度(Policy Gradient)算法学习
    delphi中Message消息的使用方法
    基于python+Django+SVM算法模型的文本情感识别系统
    yaf常用开发工具:代码格式化&修复、语法检查、单元测试 —— k8s从入门到高并发系列教程 (五)
    Java知识点--IO流(下)
  • 原文地址:https://ask.csdn.net/questions/8088524