学习mybatis的时候,突然遇到测试出错。测试mapper代理失败,现在钻研少了,不喜欢看未知的错误了,立即改正。错误打印说mapper.xml已经注册,仔细查看SQLMapConfig.xml发现确实。修改后正常。

原因是直接复制教学代码,在SqlMapConfig.xml中,配置mappers,加载映射文件,已经配置了加载包文件,然后我自己又添加了单独的mapper。所以出错了,将包注释掉就ok。

测试用例:

 1 @Before
 2     public void setUp() throws Exception {
 3         // 创建sqlSessionFactory
 4         // mybatis配置文件
 5         String resource = "SqlMapConfig.xml";
 6         // 得到配置文件流
 7         InputStream inputStream = Resources.getResourceAsStream(resource);
 8         // 创建会话工厂,传入mybatis的配置文件信息
 9         sqlSessionFactory = new SqlSessionFactoryBuilder()
10                 .build(inputStream);
11         
12     }
13     
14     @Test
15     public void testFindUserById() throws Exception{
16         SqlSession sqlSession = sqlSessionFactory.openSession();
17         UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
18         User user = userMapper.findUserById(1);
19         System.out.println(user);
20     
21     }

SqlMapConfig.xml

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE configuration
 3 PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 4 "http://mybatis.org/dtd/mybatis-3-config.dtd">
 5 <configuration>
 6 
 7     <!-- 加载属性文件 -->
 8     <properties resource="db.properties">
 9         <!--properties中还可以配置一些属性名和属性值  -->
10         <!-- <property name="jdbc.driver" value=""/> -->
11     </properties>
12     <!-- 全局配置参数,需要时再设置 -->
13     <!-- <settings>
14     
15     </settings> -->
16     
17     <!-- 别名定义 -->
18     <typeAliases>
19         
20         <!-- 针对单个别名定义
21         type:类型的路径
22         alias:别名
23          -->
24         <!-- <typeAlias type="cn.itcast.mybatis.po.User" alias="user"/> -->
25         <!-- 批量别名定义 
26         指定包名,mybatis自动扫描包中的po类,自动定义别名,别名就是类名(首字母大写或小写都可以)
27         -->
28         <package name="cn.itcast.mybatis.po"/>
29         
30     </typeAliases>
31     
32     <!-- 和spring整合后 environments配置将废除-->
33     <environments default="development">
34         <environment >
35         <!-- 使用jdbc事务管理,事务控制由mybatis-->
36             <transactionManager type="JDBC" />
37         <!-- 数据库连接池,由mybatis管理-->
38             <dataSource type="POOLED">
39                 <property name="driver" value="${jdbc.driver}" />
40                 <property name="url" value="${jdbc.url}" />
41                 <property name="username" value="${jdbc.username}" />
42                 <property name="password" value="${jdbc.password}" />
43             </dataSource>
44         </environment>
45     </environments>
46     <!-- 加载 映射文件 -->
47     <mappers>
48         <mapper resource="sqlmap/User.xml"/>
49         <mapper resource="mapper/UserMapper.xml"/>
50         
51         <!--通过resource方法一次加载一个映射文件 -->
52         <!-- <mapper resource="mapper/UserMapper.xml"/> -->
53         
54         <!-- 通过mapper接口加载单个 映射文件
55         遵循一些规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录 中
56         上边规范的前提是:使用的是mapper代理方法
57          -->
58         <!-- <mapper class="cn.itcast.mybatis.mapper.UserMapper"/> -->
59         
60         <!-- 批量加载mapper
61         指定mapper接口的包名,mybatis自动扫描包下边所有mapper接口进行加载
62         遵循一些规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录 中
63         上边规范的前提是:使用的是mapper代理方法
64          -->
65     <!--     <package name="cn.mrf.mybatis.mapper"/> -->
66 
67     </mappers>
68     
69 </configuration>
View Code

相关文章: