• mybatis的mapper包导入失败


    为什么mapper包引入失败呀?
    mapper接口

    
    package com.benchuat.mapper;
    
    import com.benchuat.pojo.User;
    import org.apache.ibatis.annotations.Mapper;
    
    @Mapper
    public interface UserMapper {
        int insertUser(String name, int age);
        int  deleteUserbyId(int id);
        int updateUserbyId(int id, String name, int age);
        User selectUserbyId(int id);
    }
    

    mybatis.xml

    xml version="1.0" encoding="UTF-8" ?>
    configuration
            PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-config.dtd">
    <configuration>
        <properties resource="application.properties">properties>
        <typeAliases>
            <package name="com.benchuat.pojo"/>
        typeAliases>
        
        <environments default="development">
            <environment id="development">
                <transactionManager type="JDBC"/> 
                <dataSource type="POOLED">  
                    <property name="driver" value="${spring.datasource.driver-class-name}"/>
                    <property name="url" value="${spring.datasource.url}"/>
                    <property name="username" value="${spring.datasource.username}"/>
                    <property name="password" value="${spring.datasource.password}"/>
                dataSource>
            environment>
        environments>
        
        <mappers>
            
            
            <package name="com.benchuat.mapper"/>
        mappers>
    configuration>
    

    测试方法

        @Test
        public void userTest() {
            Connation connation = new Connation();
            SqlSession session = connation.getSession();
            User user = session.selectOne("com.benchuat.mapper.UserMapper.selectUserbyId", 1);
            System.out.println(user);
            connation.closeSession(session);
        }
    

    目录

    img

    使用资源导入没有问题

    img

    使用包导入就不行

    img

    展开全部

    • 一轮明月照丘壑 2024-10-08 18:01
      关注

      以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

      你的问题是关于MyBatis的配置问题,你试图使用包扫描的方式来导入mapper接口,但是出现了错误。这种情况可能有以下几个原因:

      1. Mapper接口没有在正确的位置: 确保你的UserMapper接口在com.benchuat.mapper包下。
      2. XML映射文件的位置: 你的Mapper接口对应的XML文件应该与接口在同一个目录下,也就是应该在com.benchuat.mapper包下。比如你的UserMapper.xml应该放在com.benchuat.mapper目录下。
      3. XML映射文件的命名: XML文件名应该与Mapper接口的名称相同,也就是UserMapper.xml
      4. XML映射文件中的namespace: 在XML文件中,namespace属性应该与Mapper接口的全限定名相同,也就是com.benchuat.mapper.UserMapper
      5. 方法名和SQL语句的匹配: 在XML文件中定义的SQL语句的id应该与Mapper接口中的方法名相匹配。在你的例子中,应该有这样一个SQL语句:
      6. 确保MyBatis配置正确: 你的mybatis配置文件中标签内的标签应该指向正确的包路径,也就是包含你的Mapper接口的包路径。
      7. 确保数据库连接和其他配置正确: 检查你的数据库连接配置(如驱动类名、URL、用户名和密码)是否正确。另外,确保你的数据库中有对应的表和字段。

      根据你提供的错误信息,问题可能在于MyBatis没有找到对应的映射语句。请检查上述各点,确保配置正确。如果问题仍然存在,你可能需要提供更多的信息,如项目结构、配置文件和代码的具体细节等,以便更好地定位问题。

    • 关注

      晚上好🌙🌙🌙
      本答案参考ChatGPT-3.5

      你的问题出在Mapper接口的定义上。你需要确保这个接口包含一个名为selectUserbyId的方法。否则,你的映射器可能无法找到该方法。

      以下是一个例子:

      namespace="com.benchuat.mapper">
          <select id="selectUserbyId" resultType="com.benchuat.po.User">
              SELECT * FROM user WHERE id = #{id}
          select>
      
      

      然后,你可以按照以下方式引用这个接口:

      <include refid="UserMapper" />
      

      如果你已经在UserMapper.xml中使用了UserMapper这个接口,那么只需要在这个标签下添加你的映射代码即可。

      namespace="com.benchuat.mapper">
          <select id="selectUserbyId" resultType="com.benchuat.po.User">
              SELECT * FROM user WHERE id = #{id}
          select>
      
      

      如果你需要将接口和映射类重写,可以这样做:

      // UserMapper.xml
      
      namespace="com.benchuat.mapper">
          <select id="selectUserbyId" resultType="com.benchuat(po.User)">
              SELECT * FROM user WHERE id = #{id}
          select>
      
      
      // MybatisTest.java
      
      public class MybatisTest {
      
          @Test
          public void testUser() {
              // 此处替换为你的数据源、查询语句等信息
              User user = conn.readFromUserMapper("com.benchuat.mapper.UserMapper", 1);
              System.out.println(user.getName());
              conn.close();
          }
      
          // 更改UserMapper.xml中的userMapper方法实现为你自己的映射方法
          // 或者如果你的接口里也包含了一个与用户相关的方法,比如UserServiceImpl,那么这里就不用做了
      }
      

      这样,当调用UserMapper.selectUserbyId时,它就会返回正确的结果。如果这个方法不存在或者不存在对应的SQL语句,那么会抛出异常。

      展开全部

    • 专家-郭老师 Java领域新星创作者 2024-10-08 18:13
      关注

      说实话,谁教你这么写的,对接mybatis,你就老实写接口,写xml。
      搞这么原始的干嘛~

      BenChuat 2024-10-08 21:44

      我写的不就是UserMapper接口和UserMapper.xml吗?

      回复
    • a1767028198 2024-10-08 20:04
      关注

      xml自己的包扫描方式,它的底层逻辑做的很简单,就是你的接口全限定路径,看你配置的xml位置,丢到mapper下面的,你得和接口路径一致,丢到com.benchuat.mapper下面去

      img

      BenChuat 2024-10-08 21:42

      我的UserMapper已经是在com.benchuat.mapper下的啦,还是说意思是把mybatis的配置文件xml也丢到mapper下(试了也不行)?

      img

      回复
      a1767028198 回复 BenChuat 2024-10-09 10:42

      说了xml,xml,xml,你是一点也不看啊,你xml丢在com.benchuat.mapper下面的?

      img

      回复
    • 骑着猪看大海 2024-10-11 14:55
      关注

      xml文件的位置得在 com.benchuat.mapper 下面,你的就直接再mapper下面

  • 相关阅读:
    [CF Gym101196-I] Waif Until Dark 网络最大流
    【STL】stack栈容器与list链表容器
    内网穿透 cpolar
    DC电源模块的使用寿命问题
    Hive基本使用
    抖音视频抓取软件的优势|视频评论内容提取器|批量视频下载
    每日一题——替换空格
    Clickhouse:clickhouse切换目录
    什么是窃听攻击、XSS攻击、CSRF攻击?
    【C++】教大家在七夕new一个对象
  • 原文地址:https://ask.csdn.net/questions/8149791