
狂神MyBatis学习笔记深入解析
下载需积分: 50 | 160B |
更新于2025-02-26
| 129 浏览量 | 举报
收藏
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 时,每个知识点都有许多细节值得深入学习和掌握。
相关推荐










雁留僧
- 粉丝: 9
最新资源
- jQuery实现完美图片滚动效果插件
- CodeSmith实现三层结构代码自动化生成
- 使用AJAX+ASP.NET实现无刷新用户名检测技术
- 经典C++学习指南《Accelerated C++》
- Borland Delphi组件:数据导出解决方案
- JAVA网络聊天室毕业设计程序指南
- Sturts2.0网上购物系统详解与源码分享
- C#学生管理系统:完整源代码参考
- 深入解析SQL Server JDBC驱动包的应用
- 解压与管理t04.rar压缩包的技巧
- NET三层架构详解与实践案例解析
- Java排序算法精选案例深度解析
- 局域网聊天程序:VC实现简单通讯
- C++Builder中的TImage控件图片特技处理教程
- Cognos SDK Java实现:实例教程与代码参考
- 基于JSP和SERVLET的医疗信息管理系统功能解析
- 深入探究Windows XP中的IIS 5.1信息服务器
- FSTL飞诗CAD插件管理器:高效CAD插件管理工具
- 基于POI实现Excel与SQL2000数据互导毕业设计
- 自定义颜色渐变进度条的参数配置方法
- SQL语句学习手册实例版:从建表到操作
- 针对Photoshop中文字体错误的字体引擎补丁
- 从零基础到高手的XML编程全攻略
- 教学管理系统数据库课程设计:后台环境VC++与SQL实现