前言
简单实现通过代理接口来实现对数据的查询demo,也是对mybatis的一个熟练。首先是编写接口代理。
public interface IBookMapper {
List<BookModel> getBookList() throws Exception;
}
代理接口编写完毕后,需要在sqlMapConfig中添加映射,同时编码对应的mapper配置。我的接口和接口对应的mapper.xml是放在一个包下面的,目的是为了通过mappers映射器的package映射直接映射类过来。
<configuration>
<properties resource="book.properties">
</properties>
<environments default="mysql">
<environment id="mysql">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}" />
<property name="url"
value="jdbc:mysql://localhost:3306/mytest?characterEncoding=utf-8" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.pwd}" />
</dataSource>
</environment>
</environments>
<mappers>
<package name="Mapper" />
</mappers>
</configuration>
对应的mapper配置
<mapper namespace="Mapper.IBookMapper">
<select id="getBookList" resultType="Models.BookModel">
select * from book
</select>
</mapper>
需要注意的是:mapper配置中的namespace是我们要找的代理接口,需要整个命名空间权限名。我们在sqlSessionConfig中的mappers映射器中的pacakge的name是我们要去映射的包,包里面有我们的代理接口和映射配置文件,配置文件的名字和代理接口的名字是一样的。如下图:
基本已经完成,接下来我们开始通过junit来测试我们的结果。
@Test
public void selectTest() {
SqlSession openSession = factory.openSession();
IBookMapper mapper = openSession.getMapper(IBookMapper.class);
List<BookModel> list = null;
try {
list = mapper.getBookList();
} catch (Exception e) {
e.printStackTrace();
}
openSession.close();
if (list != null) {
for (BookModel b : list) {
System.out.println(b);
}
}
}
测试结果,在我们的控制台输出我们的查询结果:
总结
对于学习新的东西,有人指导一下我想会更好,没有指导,在自己学完以后,做个demo是对所学的东西的最好的诠释。即使有人指导,有人教,那么在听取以后,要去思考把东西融入到自己的理解中然后按照自己的理解去demo一下会更加能加深对知识的巩固。一定是接着别人的讲,而不是按照别人的讲。更多的是要去与大家分享,很可能会得到更多的收获。