//mybatis的配置文件
String resource = "conf.xml";
//使用类加载器加载mybatis的配置文件(它也加载关联的映射文件)
// InputStream is = App.class.getClassLoader().getResourceAsStream(resource);
Reader reader = Resources.getResourceAsReader(resource);
//构建sqlSession的工厂
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
//使用MyBatis提供的Resources类加载mybatis的配置文件(它也加载关联的映射文件)
//Reader reader = Resources.getResourceAsReader(resource);
//构建sqlSession的工厂
//SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
//创建能执行映射文件中sql的sqlSession
SqlSession session = sessionFactory.openSession();
二、认识接口
public interface SqlSessionFactory {
疑问:接口何时实例化??
}
public SqlSessionFactory build(Reader reader) {
return build(reader, null, null);
}
public SqlSessionFactory build(Reader reader, String environment, Properties props) {
return build(new ReaderInputStream(reader), environment, props);
}
public SqlSessionFactory build(InputStream inputStream, String environment, Properties props) {
try {
XMLConfigBuilder parser = new XMLConfigBuilder(inputStream, environment, props);
Configuration config = parser.parse();
return build(config);
} catch (Exception e) {
throw ExceptionFactory.wrapException("Error building SqlSession.", e);
} finally {
ErrorContext.instance().reset();
try {
inputStream.close();
} catch (IOException e) {
// Intentionally ignore. Prefer previous error.
}
}
}
public SqlSessionFactory build(Configuration config) {
//接口此时完成实例化
return new DefaultSqlSessionFactory(config);
}
相关推荐
总结起来,MyBatis源码分析涵盖了从配置加载到数据库操作的全过程,涉及到了配置解析、SQL执行、结果映射等多个关键环节,以及Executor、StatementHandler等核心组件。通过深入学习MyBatis的源码,开发者不仅可以...
### MyBatis源码解析——由阿里巴巴P7架构师纯手工打造 #### 一、前言 在现代软件开发过程中,持久层框架如MyBatis因其简单易用、灵活高效的特点而受到广泛欢迎。作为一款优秀的Java持久层框架,MyBatis通过SQL...
《MyBatis源码详解学习》是一份专为对MyBatis源码感兴趣的开发者准备的资料,它旨在帮助读者深入理解这个流行持久层框架的工作原理。MyBatis作为一个轻量级的ORM(对象关系映射)框架,因其简单易用、高度可定制化的...
一、MyBatis源码解析 MyBatis的源码主要由SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession和Mapper接口等核心组件构成。SqlSessionFactoryBuilder用于创建SqlSessionFactory,它是MyBatis的核心工厂类。...
在运行时,MyBatis通过`MapperRegistry`和`MapperProxy`来实例化和调用映射器,实现方法调用到SQL执行的转化。 5. 事务管理:MyBatis提供了Transaction接口,用于处理数据库事务。它可以集成Spring等容器进行管理,...
着手“手撕Mybatis源码,自己动手实现Mybatis”是一项深入理解其内部机制的挑战,也是提升自身编程技能的绝佳途径。下面我们将探讨Mybatis的核心组件和工作原理,以及如何基于这些知识构建一个类似的框架。 1. **...
在源码层面,MyBatis通过DefaultSqlSessionFactory来实例化SqlSession。DefaultSqlSessionFactory会读取配置文件(mybatis-config.xml),解析出DataSource、TransactionManager等关键信息。SqlSession的openSession...
在深入MyBatis源码之前,我们需要了解一些基础概念。MyBatis的核心组件包括SqlSessionFactory、SqlSession和Mapper接口。SqlSessionFactory是MyBatis的主要工厂类,用于创建SqlSession实例,而SqlSession则负责执行...
通过对MyBatis源码的阅读和分析,开发者能够深入理解数据库操作的底层细节,提高编程效率,同时也能更好地应对性能优化、异常处理和扩展需求。对于任何想成为优秀Java开发者的程序员来说,研究MyBatis源码都是一个...
深入学习MyBatis源码,可以让我们在开发过程中更好地利用它,避免潜在的问题,并且能够根据项目需求进行扩展和定制。对于有经验的开发者,源码分析有助于优化数据库操作,提高应用程序的性能。总之,"mybatis-3-...
MyBatis是一个优秀的Java持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的...
SqlSessionFactory是MyBatis的主要组件,用于创建SqlSession实例,它是线程安全的,可以被多个并发线程共享。 2. **SqlSessionFactory**: 通过SqlSessionFactoryBuilder创建后,SqlSessionFactory负责创建...
1. **SqlSessionFactoryBuilder**: 用于构建SqlSessionFactory,它是MyBatis的核心工厂类,可以创建SqlSessionFactory实例,通常在应用程序启动时初始化。 2. **SqlSessionFactory**: 提供SqlSession的创建,...
SSM框架,全称为Spring、Spring MVC和MyBatis,是Java开发中广泛使用的轻量级Web...提供的"互联网轻量级SSM框架解密:Spring、Spring MVC、MyBatis源码深度剖析.pdf"文档,无疑是一份宝贵的参考资料,值得深入研究。
MyBatis是一个优秀的Java持久层框架,它支持定制化SQL、存储过程以及高级映射。在深入探讨MyBatis项目源码之前,我们先要理解MyBatis的基本概念和核心功能。 MyBatis的主要特点包括: 1. **SQL定制**:MyBatis允许...
1. **SqlSessionFactoryBuilder**:这个类用于构建SqlSessionFactory,它是MyBatis的核心工厂,负责创建SqlSessionFactory实例。你可以通过它来加载配置文件或者提供一个已经存在的Configuration对象。 2. **...
MyBatis是一个优秀的Java持久层框架,它支持定制化SQL、存储过程以及高级映射。在深入探讨MyBatis 3.3.1的源码之前,先了解一下MyBatis的基本概念和工作原理。 MyBatis的核心是SQL映射文件和SqlSessionFactory。SQL...
在"SpringMVC+Mybatis demo"中,MyBatis与Spring结合,通过Spring的SqlSessionFactoryBean创建SqlSessionFactory,进一步生成SqlSession实例。Mapper接口的实现通常会使用`@Mapper`注解,这样Spring能够自动扫描并...
通过对MyBatis源码的学习,我们可以了解到MyBatis如何解析配置,如何构建SQL,如何处理参数和结果,以及如何利用缓存提高性能。这对于理解和优化MyBatis的应用,甚至开发自己的持久层框架都有极大的帮助。在阅读源码...