Mybatis的快速入门
public void testFindAll() throws IOException {
// 读取配置文件
InputStream inputStream = MybatisTest.class.getClassLoader().getResourceAsStream("SqlMapConfig.xml");
// 获取SqlSessionFactory对象
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
// 使用工厂生产SqlSession对象
SqlSession sqlSession = factory.openSession();
// 使用SqlSession创建Dao接口的代理对象
IUserDao userDao = sqlSession.getMapper(IUserDao.class);
// 执行查询所有方法
List<User> userList = userDao.findAll();
for (User user : userList) {
System.out.println(user);
}
// 释放资源
sqlSession.close();
inputStream.close();
}
- 读取配置文件遇到的问题,绝对路径和相对路径,他们都有各自的问题,所以我们在开发中大概只使用两种. 一.类加载器,读取类路径的配置文件 二.使用ServletContext的getRealPath()得到当前项目部署的路径.
- new SqlSessionFactoryBuilder() 使用了构建者设计模式,隐藏了对象的创建细节
- 创建SqlSession对象使用了工厂模式 降低了类之间的依赖关系
- session.getMapper(IUserDao.class) 使用了代理模式 不修改源码的情况下对已有方法增强.
下面来一张Mybatis的快速入门的流程图供大家理解
为什么要加这些东西呢?为了灵活,为了在开发中选择更多,在后面开发中我们之间拿来使用,而细节会被之间隐藏掉.
好了,我们大概的了解了Mybatis的基于代理Dao的流程.