栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

mybatis使用package方式映射mapper报错

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

mybatis使用package方式映射mapper报错

⚠️ mybatis使用package方式映射mapper报错

文章目录
  • :warning: mybatis使用package方式映射mapper报错
    • :point_right:其他映射mapper的方法
      • :one:mapper标签使用resource映射
      • :two:mapper标签使用class映射
      • :three:mapper标签使用url映射

在初学mybatis通过junit测试功能时系统一直报

Mapped Statements collection does not contain value for pers.dhx_.DAO.UserMapper.insertUser

大概意思是mybatis无法找到UserMapper的映射文件

也就是识别UserMapper.xml过程中出问题了

测试的代码如下:

    @Test
    public void test1() throws Exception{
//      获取核心配置文件的输入流
        InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
//      获取SqlSessionFactoryBuilder对象
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder=new SqlSessionFactoryBuilder();
//      获取SqlSessionFactory对象
        SqlSessionFactory sqlSessionFactory=sqlSessionFactoryBuilder.build(is);
//        获取Sql 的会话对象  -- > SqlSession , 是mybatis提供操作数据库的核心对象
        SqlSession sqlSession = sqlSessionFactory.openSession(true);  // 将参数设置为true , 就是开启了自动提交
//      通过sqlSession获取UserMapper的代理实现对象 ,这个方法的底层 用的是代理模式, 实现的Mapper接口的一个代理实现类,重写了接口的方法(通过映射文件)
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        System.out.println(mapper.insertUser());
//        sqlSession.commit(); // 提交事务
        sqlSession.close(); // 关闭会话
    }
  • 原本是将UserMapper.xml放在resources目录下

UerMapper.xml



   



    
        insert into t_user values(null,'admin1','123456',23,'男','12345@qq.com')
    

后来查阅资料发现错误原因是, 如果使用package标签映射mapper文件 , resources目录和java目录中的 xml文件要与 接口对应

看图就明白了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0LaLpEUl-1658302227614)(E:Typoraimageimage-20220720151037375.png)]

教程里面的老师没有说这个 ,但是也应该注意

其他映射mapper的方法 1️⃣mapper标签使用resource映射

mybatis-config.xml

  • resource



    
    
        
            
            
                
                
                
                
            
        
    
    
     
        
     

附上resources目录

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ocsQvtaj-1658302227615)(E:Typoraimageimage-20220720151516654.png)]

2️⃣mapper标签使用class映射

class 注意要写全类名

需要注意的是这里需要在接口的方法上面写上对应的注解

UserMapper.java

package pers.dhx_.mapper;

import org.apache.ibatis.annotations.Insert;


public interface UserMapper {
    @Insert(value = "insert into t_user values(null,'admin','123456',23,'男','12345@qq.com')")
    int insertUser();
}

mybatis-config.xml




    
    
        
            
            
                
                
                
                
            
        
    
    
    
        
    

3️⃣mapper标签使用url映射

其实就是使用绝对路径

  • 一般情况下不会使用这种方式,了解即可
 
     
         
     

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1024768.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号