mybatis学习心得

  1. Caused by: java.io.IOException: Could not find resource mapper/UserMapper.xml
    	at org.apache.ibatis.io.Resources.getResourceAsStream(Resources.java:110)
    	at org.apache.ibatis.io.Resources.getResourceAsStream(Resources.java:97)
    	at org.apache.ibatis.builder.xml.XMLConfigBuilder.mapperElement(XMLConfigBuilder.java:320)
    	at org.apache.ibatis.builder.xml.XMLConfigBuilder.parseConfiguration(XMLConfigBuilder.java:107)
    	... 4 more
    

    由于我用的是maven管理的jar包,它默认打包只打包resources下面的文件,所以我的mapper包下面的映射文件没有被当做资源文件,要在pom的中加载下面一段话:

    
                
                    src/main/resources
                
                
                    ${project.basedir}/src/main/java/mapper
                    mapper
                    false
                    
                        **/*.xml
                    
                
            

    这样这个mapper文件就被加载了。Maven 打包resource目录外资源的3种方式

  2. Caused by: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for mapper.UserMapper
    	at org.apache.ibatis.session.Configuration$StrictMap.get(Configuration.java:797)
    	at org.apache.ibatis.session.Configuration.getMappedStatement(Configuration.java:631)
    	at org.apache.ibatis.session.Configuration.getMappedStatement(Configuration.java:624)
    	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:107)
    	... 3 more
    

    错误原因有几种:
    1、mapper.xml中没有加入namespace
    2、mapper.xml中的方法和接口mapper的方法不对应
    3、mapper.xml没有加入到mybatis-config.xml中(即总的配置文件),例外:配置了mapper文件的包路径的除外
    4、mapper.xml文件名和所写的mapper名称不相同 。

     SqlSession session = sqlSessionFactory.openSession();
            User user = session.selectOne("mapper.UserMapper",1);
            session.close();
            System.out.println(user.toString());

    我的错误是selectOne中只用到了UserMapper接口,而没有用到UserMapper中的方法要改成mapper.UserMapper.selectUser.

    SqlSession session = sqlSessionFactory.openSession();
            User user = session.selectOne("mapper.UserMapper.selectUser",1);
            session.close();
            System.out.println(user.toString());

     

  3. 外部的jdbc.properties资源的加载,想要加载外部的jdbc.properties的话,要在mybatis的配置文件中加入

    属性,指定jdbc配置文件的位置,然后就可以在环境中引用它了。

     
            
                
                
                    
                    
                    
                    
                
            
        

     

你可能感兴趣的:(maven,mybatis)