在开发过程中,遇到错误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