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