Mybatis注解学习--xxxMapper is not known to the MapperRegistry

        在开发过程中,遇到错误Type interface com.souvi.ibatis.xxxMapper is  not known to the MapperRegistry,后在网上搜索相关的解决方案时,查到了这篇文章,知道Mybatis注解一定要注册自己写的接口类,不然就会老报这种错误,特在此记录。

        下面举个例子,先看看项目的简单部署吧,如图:


        先看核心文件,UserTest.java

package com.bijian.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.bijian.mapperinterface.UserMapper;
import com.bijian.model.User;

public class UserTest {
    
    public static void main(String[] args) {

        String resource = "configure.xml";

        Reader reader = null;
        try {
            reader = Resources.getResourceAsReader(resource);
        } catch (IOException e) {
            e.printStackTrace();
        }

        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader);
        factory.getConfiguration().addMapper(UserMapper.class);
        SqlSession sqlSession = factory.openSession();
        try {
            UserMapper userInfoMapper = sqlSession.getMapper(UserMapper.class);
            User user = userInfoMapper.findById(2);
            System.out.println(user);
        } finally {
            sqlSession.close();
        }
    }
}

        主要要注意的是比如要注册,也就是这行代码:

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

        UserInfoMapper.java代码如下:

package com.bijian.mapperinterface;

import org.apache.ibatis.annotations.Select;

import com.bijian.model.User;

public interface UserMapper {

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

        user.java代码如下:

package com.bijian.model;

public class User {

    private int id;
    private String name;
    private int age;
    
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    
    @Override
    public String toString() {
        return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
    }
}

        最后的configure.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>
    <typeAliases>
        <typeAlias alias="User" type="com.bijian.model.User" />
    </typeAliases>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://127.0.0.1:3306/test" />
                <property name="username" value="test" />
                <property name="password" value="test" />
            </dataSource>
        </environment>
    </environments>
</configuration> 

script.sql

use test;

DROP TABLE IF EXISTS user_tb;
CREATE TABLE `user_tb` (
  `id` int(11) NOT NULL auto_increment COMMENT 'ID',
  `name` varchar(30) NOT NULL COMMENT '姓名',
  `age` int(3) DEFAULT NULL COMMENT '年龄',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户信息表';

insert into user_tb(name,age) values('张三',18);
insert into user_tb(name,age) values('李四',19);

参考文章:http://www.cnblogs.com/rollenholt/archive/2012/11/07/2758008.html

猜你喜欢

转载自bijian1013.iteye.com/blog/2318096