### MyBatis-3-User-Guide 知识点概览 #### 一、MyBatis简介 在《MyBatis-3-User-Guide》文档中,首先介绍了MyBatis的基本概念及其重要性。MyBatis是一个优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集的过程,可以将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 #### 二、开始使用MyBatis ##### 构建`SqlSessionFactory`从XML配置文件 要使用MyBatis,首先需要创建一个`SqlSessionFactory`实例。最常见的方式是通过XML配置文件来创建,其中包含了连接数据库的信息和其他配置信息。例如: ```java Reader reader = Resources.getResourceAsReader("org/mybatis/example/mybatis-config.xml"); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); ``` ##### 不使用XML配置构建`SqlSessionFactory` 如果不想使用XML配置文件,也可以通过`SqlSessionFactoryBuilder`的`build`方法传递一个`Configuration`对象来创建`SqlSessionFactory`。这种方式更灵活,适合动态配置需求。 ```java Configuration config = new Configuration(); config.setDataSource(new PooledDataSource(...)); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(config); ``` ##### 从`SqlSessionFactory`获取`SqlSession` 在创建了`SqlSessionFactory`之后,可以通过调用其`openSession()`方法来获取`SqlSession`实例,它是进行数据库操作的基础。 ```java SqlSession session = sqlSessionFactory.openSession(); ``` #### 三、探索映射的SQL语句 MyBatis的核心是基于映射的SQL语句。每个映射的语句都在配置文件或接口注解中定义,并且这些语句都是命名空间的一部分,以避免冲突。 #### 四、关于命名空间的注意事项 命名空间用于组织映射的SQL语句,确保它们是唯一的。通常情况下,命名空间就是映射接口的全限定类名。这有助于避免语句名称的冲突。 #### 五、作用域和生命周期 `SqlSession`和`SqlSessionFactory`的作用域和生命周期是MyBatis中非常重要的概念。`SqlSessionFactory`是一个重用的对象,它的实例在整个应用的运行期间存在;而`SqlSession`则应该在一个业务逻辑处理的过程中被创建,在完成后立即关闭。 #### 六、Mapper配置XML 在MyBatis中,`mapper`配置文件是非常核心的部分。它包含了对SQL语句的定义和结果集的映射规则。 - **属性**:如`defaultScriptingLanguage`等,用于控制`mapper`文件的行为。 - **设置**:如`cacheEnabled`等,用于控制整个MyBatis的行为。 - **类型别名**:为Java类型设置一个简短的名字,使得XML配置文件更加简洁易读。 - **类型处理器**:用于将预处理语句(PreparedStatement)的参数从JavaType转换到JdbcType,或者从数据库结果集中取出的数据转换为JavaType。 - **对象工厂**:控制MyBatis创建的新对象的实例化方式。 - **插件**:提供了一种扩展MyBatis功能的方式,例如拦截某些方法调用。 - **环境**:定义了多个数据库环境,例如开发、测试、生产等。 - **事务管理器**:用于指定如何管理和控制事务。 - **数据源**:指定如何获取数据源,例如使用JNDI或使用PooledDataSource等。 - **Mappers**:定义了映射接口的位置,可以是包路径或者是具体的接口类。 #### 七、SQL映射文件 - **select**:定义查询语句。 - **insert/update/delete**:定义增删改语句。 - **sql**:定义可复用的SQL片段。 - **参数处理**:MyBatis支持多种方式处理参数,包括`#{}`占位符语法。 #### 八、结果映射 结果映射是MyBatis中最强大的特性之一,它允许开发者使用简单的配置即可实现复杂的关联关系映射。 - **基本映射**:如`id`、`result`等,用于简单的字段映射。 - **支持的JDBC类型**:MyBatis支持广泛的JDBC类型,并能自动进行类型转换。 - **构造器映射**:用于根据结果集中的一组列创建对象。 - **关联映射**:处理一对多或多对一的关系。 - **集合映射**:处理多对多的关系。 - **判别器映射**:用于根据某个字段的不同值返回不同类型的结果。 - **缓存**:提供了两种缓存机制,一级缓存和二级缓存,可以提高查询性能。 - **自定义缓存**:允许开发者实现自己的缓存机制。 - **引用缓存**:用于共享同一个缓存实例。 #### 九、动态SQL MyBatis支持动态SQL,允许在运行时动态生成SQL语句。 - **if**:根据条件生成SQL片段。 - **choose/when/otherwise**:类似于Java中的`switch`语句。 - **trim/where/set**:用于处理SQL中的空格和逗号等问题。 - **foreach**:循环生成SQL片段。 #### 十、Java API 除了XML配置文件外,MyBatis还提供了丰富的Java API供开发者使用。 - **目录结构**:介绍了MyBatis项目的基本目录结构。 - **SqlSessions**:解释了`SqlSession`的相关操作。 - **SqlSessionFactoryBuilder**:用于构建`SqlSessionFactory`。 - **SqlSessionFactory**:提供创建`SqlSession`的方法。 - **SqlSession**:执行SQL语句的主要接口。 - **SelectBuilder**:用于构建选择语句的工具类。 - **SqlBuilder**:用于构建其他类型SQL语句的工具类。 以上内容覆盖了《MyBatis-3-User-Guide》文档中的主要知识点。通过理解这些概念和技术细节,可以帮助开发者更好地掌握和使用MyBatis框架。
剩余63页未读,继续阅读
- 粉丝: 5
- 资源: 7
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- JAVA的Springmvc图书管理系统源码数据库 MySQL源码类型 WebForm
- (源码)基于NSGAII算法的代码重构优化系统.zip
- (源码)基于SpringBoot框架的任务管理系统.zip
- JAVA的Springboot行为分析信息管理系统源码数据库 MySQL源码类型 WebForm
- 迅雷10.0.3下载专用
- (源码)基于JavaFX和MySQL的奖学金信息管理系统.zip
- (源码)基于Bootstrap+JSP+Servlet+JavaBean的博客系统.zip
- (源码)基于SpringBoot和Vue的设备管理系统.zip
- (源码)基于ESP8266的无人机摄像头控制系统.zip
- (源码)基于SpringBoot和Vue的仓库管理系统.zip