BenChuat 2024-10-08 18:00 采纳率: 63.3%
浏览 66

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" ?>
<!DOCTYPE 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>
        <!--<mapper resource="mapper/UserMapper.xml"/>-->
        <!--使用包导入com/benchuat/mapper-->
        <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

  • 写回答

6条回答 默认 最新

  • 一轮明月照丘壑 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语句:<select id="selectUserbyId" resultType="com.benchuat.pojo.User">...</select>
    6. 确保MyBatis配置正确: 你的mybatis配置文件中<mappers>标签内的<package>标签应该指向正确的包路径,也就是包含你的Mapper接口的包路径。
    7. 确保数据库连接和其他配置正确: 检查你的数据库连接配置(如驱动类名、URL、用户名和密码)是否正确。另外,确保你的数据库中有对应的表和字段。

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

    评论

报告相同问题?

问题事件

  • 修改了问题 10月8日
  • 创建了问题 10月8日