file-type

狂神MyBatis学习笔记深入解析

ZIP文件

下载需积分: 50 | 160B | 更新于2025-02-26 | 129 浏览量 | 1 下载量 举报 收藏
download 立即下载
MyBatis 是一个流行的 Java 持久层框架,它封装了 JDBC 操作,简化了数据库的操作流程,并支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJOs (Plain Old Java Objects, 普通老式 Java 对象)映射成数据库中的记录。 一、MyBatis 核心组件 MyBatis 包含以下几个核心组件: 1. SqlSessionFactoryBuilder:负责构建 SqlSessionFactory。 2. SqlSessionFactory:负责创建 SqlSession 实例。 3. SqlSession:执行持久化操作的会话,类似于 JDBC 中的 Connection。 4. Executor:MyBatis 执行器,是 MyBatis 调度的核心,负责 SQL 语句的生成和查询缓存的维护。 5. StatementHandler:负责 SQL 语句的生成和参数处理,以及结果集的处理。 6. ParameterHandler:负责预编译语句(PreparedStatement)中的参数的设置。 7. ResultSetHandler:负责将 JDBC 返回的 ResultSet 结果集对象转换成 List 集合。 8. MappedStatement:维护了一条节点信息,包括输入参数映射、输出结果映射、SQL 语句等。 二、MyBatis 配置文件 MyBatis 的配置文件通常包括以下几个部分: 1. properties:用来加载外部的 properties 文件。 2. settings:全局配置,如开启延迟加载、日志实现等。 3. typeAliases:为 Java 类型设置别名,简化了全路径类名的书写。 4. typeHandlers:自定义类型处理器,用于 Java 类型与 JDBC 类型之间的转换。 5. objectFactory:对象工厂,MyBatis 每次创建结果对象的新实例时,都会使用 ObjectFactory。 6. plugins:插件,用于自定义 MyBatis 的行为,比如分页插件 PageHelper。 7. environments:运行环境,可以配置多个,如开发、测试、生产环境。 8. environment:具体运行环境配置,包括数据源 DataSource 和事务管理器 TransactionManager。 9. databaseIdProvider:数据库厂商标识,实现多数据库的支持。 10. mappers:映射器,指定映射文件或接口的位置。 三、MyBatis 映射器(Mapper) 映射器是 MyBatis 中最重要的组件之一,负责编写 SQL 和映射结果到 POJOs。映射器可以通过 XML 文件或注解的方式编写。在 MyBatis 3.x 版本中,推荐使用注解的方式。 1. XML 映射文件: - namespace:命名空间,通常为对应接口的全路径名。 - select、insert、update、delete:映射 SQL 语句的关键字。 - parameterType:输入参数类型。 - resultType 或 resultMap:输出结果映射类型。 2. 注解方式: - @Select、@Insert、@Update、@Delete:直接在接口的方法上标注,对应不同的 SQL 操作。 - @Result、@Results:用于复杂结果集的映射。 - @Param:用于为 SQL 语句中的参数命名。 - @ResultMap:引用 XML 中定义的 resultMap。 四、MyBatis 缓存机制 MyBatis 包含两级缓存: 1. 一级缓存(本地缓存):基于 SqlSession 的生命周期。同一个 SqlSession 中,执行相同的查询会缓存结果,以避免对数据库的重复访问。 2. 二级缓存(全局缓存):基于 namespace 的缓存,可以跨多个 SqlSession 共享,通过配置开启和设置属性来控制。 五、MyBatis 延迟加载 MyBatis 支持延迟加载,也被称为按需加载,即按需加载关联对象,只有在使用时才进行加载。延迟加载可以显著提高大型应用的性能。 六、MyBatis 动态 SQL MyBatis 提供了强大的动态 SQL 语言,可以用来编写灵活的 SQL 语句。例如: - if:根据条件拼接 SQL。 - choose (when, otherwise):相当于 Java 中的 switch-case 语句。 - trim (where, set):用于处理 SQL 片段的合并。 - foreach:用于循环拼接 SQL 片段,如遍历集合。 - bind:可以创建一个变量并绑定到上下文中。 以上是对标题中提到的“狂神说java MyBatis 笔记”的内容进行的详细阐述,涵盖了 MyBatis 的核心概念、配置、映射、缓存、延迟加载和动态 SQL 等知识点。需要注意的是,虽然这里提供了一个概览,但在实际使用 MyBatis 时,每个知识点都有许多细节值得深入学习和掌握。

相关推荐