mybatis使用注解開發時報錯:Type interface com.dao.UserMapper is not known to the MapperRegistry.


第二次編輯:

離大譜就,出現這個錯的根本原因是我的加載映射文件寫錯了包的位置,本來加載映射已經在sqlMapConfig.xml文件中配置完了,但因為我配置的路徑錯誤,導致我下一個查詢時也出了很多錯誤,檢查了一個早上,都沒找到錯誤在哪,剛剛不知道咋又看了一遍,突然發現包路徑錯誤

 

 之前寫的包一直是com.mapper,但是基本的查詢也能查詢出來,是因為之前其他模塊內都寫了,直到使用復雜的就查不出來了,一直找不到原因

勸誡:一定要看對自己的包位置!!!

 

 

 

報錯內容:

org.apache.ibatis.binding.BindingException: Type interface com.dao.UserMapper is not known to the MapperRegistry.

    at org.apache.ibatis.binding.MapperRegistry.getMapper(MapperRegistry.java:47)
    at org.apache.ibatis.session.Configuration.getMapper(Configuration.java:779)
    at org.apache.ibatis.session.defaults.DefaultSqlSession.getMapper(DefaultSqlSession.java:291)
    at com.test.MapperTest.before(MapperTest.java:32)

項目目錄:

 

 UserMapper接口:

public interface UserMapper {

    @Insert("insert into user values (#{id},#{username},#{password},#{birthday})")
    public void save(User user);

    @Update("update user set username = #{username} ,password = #{password} where id = #{id}")
    public void update(User user);

    @Delete("delete from user where id = #{id}")
    public void delete(int id);

    @Select("select * from user where id = #{id}")
    public User findById(int id);

    @Select("select * from user")
    public List<User> findAll();
}

測試代碼:

public class MapperTest {

    private UserMapper mapper = null;

    private SqlSession sqlSession = null;

    @Before
    public void before() throws IOException {
        InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
//        sqlSessionFactory.getConfiguration().addMapper(UserMapper.class);
        sqlSession = sqlSessionFactory.openSession(true);
        mapper = sqlSession.getMapper(UserMapper.class);


    }

    @Test
    public void save() throws IOException {
        User user = new User();
        user.setUsername("nihao");
        user.setPassword("123456");
        mapper.save(user);
    }

    @Test
    public void update(){
        User user = new User();
        user.setId(1);
        user.setUsername("zhanzhan");
        user.setPassword("fhg");
        mapper.update(user);
    }

    @Test
    public void delete(){
        mapper.delete(2);
    }

    @Test
    public void findById(){
        User user = mapper.findById(1);
        System.out.println(user);
    }

    @Test
    public void findAll(){
        List<User> userList = mapper.findAll();
        for (User user : userList) {
            System.out.println(user);
        }
    }


    @After
    public void after(){
        sqlSession.close();
    }

}

報錯原因:

  寫完接口類之后沒有讓mybatis注冊這個類

解決辦法:

  在生成sqlSession工廠之后加入如下代碼:

sqlSessionFactory.getConfiguration().addMapper(UserMapper.class);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM