Mybatis出现Type interface XXXMapper is not known to the MapperRegistry.的解决办法。

今天在学习mybatis的注解,遇到如下报错信息:

Exception in thread "main" org.apache.ibatis.binding.BindingException: Type interface com.hbk.map.StudentMapper 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:675)
    at org.apache.ibatis.session.defaults.DefaultSqlSession.getMapper(DefaultSqlSession.java:250)
    at com.hbk.test.StudentTest.main(StudentTest.java:21)

网上查了相关资料,找到了解决办法,知道了Mybatis注解一定要注册自己写的接口类。

注解接口类:

package com.hbk.map;

import org.apache.ibatis.annotations.Delete;

public interface StudentMapper{
    @Delete("delete from student where id=#{id}")
    public void deleteById(int id);
}

测试类:

package com.hbk.test;

import java.io.IOException;
import java.io.Reader;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import com.hbk.map.StudentMapper;

public class StudentTest {

    public static void main(String[] args) {
        String resource = "com/hbk/map/mybatis-config.xml";
        try {
            Reader reader = Resources.getResourceAsReader(resource);
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
            // 加上了下面这句,解决了问题
            sqlSessionFactory.getConfiguration().addMapper(StudentMapper.class);

            SqlSession sqlSession = sqlSessionFactory.openSession();
            StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class);
            studentMapper.deleteById(1);
            sqlSession.commit();
            sqlSession.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

}

测试结果:

这里写图片描述

你可能感兴趣的:(mybatis)