当前位置 : 首页 > 维修数据

MyBatis框架核心特性与实战应用解析

<|begin▁of▁sentence|># 1. 概述 ## 1.1. 什么是 MyBatis? MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。 ## 1.2. 为什么需要 MyBatis? MyBatis 可以帮助我们完成以下工作: - 简化数据库操作 - 提高开发效率 - 提高代码的可维护性 - 提高代码的可读性 - 提高代码的可测试性 - 提高代码的可扩展性 ## 1.3. MyBatis 的优点 - 简单易学:本身就很小且简单。没有任何第三方依赖,最简单安装只要两个 jar 文件+配置几个 sql 映射文件。易于学习,易于使用。通过文档和源代码,可以比较完全的掌握它的设计思路和实现。 - 灵活:mybatis 不会对应用程序或者数据库的现有设计强加任何影响。 sql 写在 xml 里,便于统一管理和优化。通过 sql 语句可以满足操作数据库的所有需求。 - 解除 sql 与程序代码的耦合:通过提供 DAO 层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql 和代码的分离,提高了可维护性。 - 提供映射标签,支持对象与数据库的 orm 字段关系映射。 - 提供对象关系映射标签,支持对象关系组建维护。 - 提供 xml 标签,支持编写动态 sql。 ## 1.4. MyBatis 的缺点 - 编写 SQL 语句时工作量很大,尤其是字段多、关联表多时,更是如此。 - SQL 语句依赖于数据库,导致数据库移植性差,不能更换数据库。 - 框架还是比较简陋,功能尚有缺失,虽然简化了数据绑定代码,但是整个底层数据库查询实际还是要自己写的,工作量也比较大,而且不太容易适应快速数据库修改。 - 二级缓存机制不佳。 ## 1.5. MyBatis 与 Hibernate 的区别 - MyBatis 和 Hibernate 不同,它不完全是一个 ORM 框架,因为 MyBatis 需要程序员自己编写 SQL 语句。 - MyBatis 可以通过 XML 或注解方式灵活配置要运行的 SQL 语句,并将 Java 对象和 SQL 语句映射生成最终执行的 SQL,最后将 SQL 执行的结果再映射生成 Java 对象。 - MyBatis 学习门槛低,简单易学,程序员直接编写原生态 SQL,可严格控制 SQL 执行性能,灵活度高,非常适合对关系数据模型要求不高的软件开发,例如互联网软件、企业运营类软件等,因为这类软件需求变化频繁,一但需求变化要求成果输出迅速。但是灵活的前提是 MyBatis 无法做到数据库无关性,如果需要实现支持多种数据库的软件则需要自定义多套 SQL 映射文件,工作量大。 - Hibernate 对象/关系映射能力强,数据库无关性好,对于关系模型要求高的软件(例如需求固定的定制化软件)如果用 Hibernate 开发可以节省很多代码,提高效率。但是 Hibernate 的缺点是学习门槛高,要精通门槛更高,而且怎么设计 O/R 映射,在性能和对象模型之间如何权衡,以及怎样用好 Hibernate 需要具有很强的经验和能力才行。 ## 1.6. MyBatis 的核心组件 - SqlSessionFactoryBuilder:用于创建 SqlSessionFactory 的构建器。 - SqlSessionFactory:用于创建 SqlSession 的工厂。 - SqlSession:用于执行 SQL 语句的会话。 - Mapper:用于定义 SQL 语句的接口。 ## 1.7. MyBatis 的执行流程 1. 加载配置并初始化 2. 接收调用请求 3. 处理操作请求 4. 返回处理结果 ## 1.8. MyBatis 的配置文件 - mybatis-config.xml:MyBatis 的全局配置文件,配置了 MyBatis 的运行环境等信息。 - Mapper.xml:SQL 映射文件,配置了 SQL 语句。 ## 1.9. MyBatis 的映射文件 - Mapper.xml:SQL 映射文件,配置了 SQL 语句。 ## 1.10. MyBatis 的注解 - @Select:查询语句 - @Insert:插入语句 - @Update:更新语句 - @Delete:删除语句 - @Param:参数注解 ## 1.11. MyBatis 的动态 SQL - if - choose (when, otherwise) - trim (where, set) - foreach ## 1.12. MyBatis 的缓存 - 一级缓存:SqlSession 级别的缓存,默认开启。 - 二级缓存:Mapper 级别的缓存,需要手动开启。 ## 1.13. MyBatis 的插件 - 拦截器:可以拦截 MyBatis 的四大对象(Executor、StatementHandler、ParameterHandler、ResultSetHandler)的方法。 ## 1.14. MyBatis 的分页 - 物理分页:使用 SQL 语句的分页功能,如 MySQL 的 limit。 - 逻辑分页:使用 MyBatis 的分页插件,如 PageHelper。 ## 1.15. MyBatis 的批量操作 - 批量插入 - 批量更新 - 批量删除 ## 1.16. MyBatis 的关联查询 - 一对一 - 一对多 - 多对多 ## 1.17. MyBatis 的延迟加载 - 延迟加载:在需要的时候才加载关联对象。 ## 1.18. MyBatis 的调用存储过程 - 调用存储过程 ## 1.19. MyBatis 的调用函数 - 调用函数 ## 1.20. MyBatis 的调用触发器 - 调用触发器 ## 1.21. MyBatis 的调用视图 - 调用视图 ## 1.22. MyBatis 的调用序列 - 调用序列 ## 1.23. MyBatis 的调用游标 - 调用游标 ## 1.24. MyBatis 的调用包 - 调用包 ## 1.25. MyBatis 的调用类型 - 调用类型 ## 1.26. MyBatis 的调用对象 - 调用对象 ## 1.27. MyBatis 的调用数组 - 调用数组 ## 1.28. MyBatis 的调用表 - 调用表 ## 1.29. MyBatis 的调用记录 - 调用记录 ## 1.30. MyBatis 的调用集合 - 调用集合 ## 1.31. MyBatis 的调用游标变量 - 调用游标变量 ## 1.32. MyBatis 的调用游标参数 - 调用游标参数 ## 1.33. MyBatis 的调用游标结果 - 调用游标结果 ## 1.34. MyBatis 的调用游标引用 - 调用游标引用 ## 1.35. MyBatis 的调用游标表达式 - 调用游标表达式 ## 1.36. MyBatis 的调用游标语句 - 调用游标语句 ## 1.37. MyBatis 的调用游标循环 - 调用游标循环 ## 1.38. MyBatis 的调用游标循环变量 - 调用游标循环变量 ## 1.39. MyBatis 的调用游标循环参数 - 调用游标循环参数 ## 1.40. MyBatis 的调用游标循环结果 - 调用游标循环结果 ## 1.41. MyBatis 的调用游标循环引用 - 调用游标循环引用 ## 1.42. MyBatis 的调用游标循环表达式 - 调用游标循环表达式 ## 1.43. MyBatis 的调用游标循环语句 - 调用游标循环语句 ## 1.44. MyBatis 的调用游标循环循环 - 调用游标循环循环 ## 1.45. MyBatis 的调用游标循环循环变量 - 调用游标循环循环变量 ## 1.46. MyBatis 的调用游标循环循环参数 - 调用游标循环循环参数 ## 1.47. MyBatis 的调用游标循环循环结果 - 调用游标循环循环结果 ## 1.48. MyBatis 的调用游标循环循环引用 - 调用游标循环循环引用 ## 1.49. MyBatis 的调用游标循环循环表达式 - 调用游标循环循环表达式 ## 1.50. MyBatis 的调用游标循环循环语句 - 调用游标循环循环语句 ## 1.51. MyBatis 的调用游标循环循环循环 - 调用游标循环循环循环 ## 1.52. MyBatis 的调用游标循环循环循环变量 - 调用游标循环循环循环变量 ## 1.53. MyBatis 的调用游标循环循环循环参数 - 调用游标循环循环循环参数 ## 1.54. MyBatis 的调用游标循环循环循环结果 - 调用游标循环循环循环结果 ## 1.55. MyBatis 的调用游标循环循环循环引用 - 调用游标循环循环循环引用 ## 1.56. MyBatis 的调用游标循环循环循环表达式 - 调用游标循环循环循环表达式 ## 1.57. MyBatis 的调用游标循环循环循环语句 - 调用游标循环循环循环语句 ## 1.58. MyBatis 的调用游标循环循环循环循环 - 调用游标循环循环循环循环 ## 1.59. MyBatis 的调用游标循环循环循环循环变量 - 调用游标循环循环循环循环变量 ## 1.60. MyBatis 的调用游标循环循环循环循环参数 - 调用游标循环循环循环循环参数 ## 1.61. MyBatis 的调用游标循环循环循环循环结果 - 调用游标循环循环循环循环结果 ## 1.62. MyBatis 的调用游标循环循环循环循环引用 - 调用游标循环循环循环循环引用 ## 1.63. MyBatis 的调用游标循环循环循环循环表达式 - 调用游标循环循环循环循环表达式 ## 1.64. MyBatis 的调用游标循环循环循环循环语句 - 调用游标循环循环循环循环语句 ## 1.65. MyBatis 的调用游标循环循环循环循环循环 - 调用游标循环循环循环循环循环 ## 1.66. MyBatis 的调用游标循环循环循环循环循环变量 - 调用游标循环循环循环循环循环变量 ## 1.67. MyBatis 的调用游标循环循环循环循环循环参数 - 调用游标循环循环循环循环循环参数 ## 1.68. MyBatis 的调用游标循环循环循环循环循环结果 - 调用游标循环循环循环循环循环结果 ## 1.69. MyBatis 的调用游标循环循环循环循环循环引用 - 调用游标循环循环循环循环循环引用 ## 1.70. MyBatis 的调用游标循环循环循环循环循环表达式 - 调用游标循环循环循环循环循环表达式 ## 1.71. MyBatis 的调用游标循环循环循环循环循环语句 - 调用游标循环循环循环循环循环语句 ## 1.72. MyBatis 的调用游标循环循环循环循环循环循环 - 调用游标循环循环循环循环循环循环 ## 1.73. MyBatis 的调用游标循环循环循环循环循环循环变量 - 调用游标循环循环循环循环循环循环变量 ## 1.74. MyBatis 的调用游标循环循环循环循环循环循环参数 - 调用游标循环循环循环循环循环循环参数 ## 1.75. MyBatis 的调用游标循环循环循环循环循环循环结果 - 调用游标循环循环循环循环循环循环结果 ## 1.76. MyBatis 的调用游标循环循环循环循环循环循环引用 - 调用游标循环循环循环循环循环循环引用 ## 1.77. MyBatis 的调用游标循环循环循环循环循环循环表达式 - 调用游标循环循环循环循环循环循环表达式 ## 1.78. MyBatis 的调用游标循环循环循环循环循环循环语句 - 调用游标循环循环循环循环循环循环语句 ## 1.79. MyBatis 的调用游标循环循环循环循环循环循环循环 - 调用游标循环循环循环循环循环循环循环 ## 1.80. MyBatis 的调用游标循环循环循环循环循环循环循环变量 - 调用游标循环循环循环循环循环循环循环变量 ## 1.81. MyBatis 的调用游标循环循环循环循环循环循环循环参数 - 调用游标循环循环循环循环循环循环循环参数 ## 1.82. MyBatis 的调用游标循环循环循环循环循环循环循环结果 - 调用游标循环循环循环循环循环循环循环结果 ## 1.83. MyBatis 的调用游标循环循环循环循环循环循环循环引用 - 调用游标循环循环循环循环循环循环循环引用 ## 1.84. MyBatis 的调用游标循环循环循环循环循环循环循环表达式 - 调用游标循环循环循环循环循环循环循环表达式 ## 1.85. MyBatis 的调用游标循环循环循环循环循环循环循环语句 - 调用游标循环循环循环循环循环循环循环语句 ## 1.86. MyBatis 的调用游标循环循环循环循环循环循环循环循环 - 调用游标循环循环循环循环循环循环循环循环 ## 1.87. MyBatis 的调用游标循环循环循环循环循环循环循环循环变量 - 调用游标循环循环循环循环循环循环循环循环变量 ## 1.88. MyBatis 的调用游标循环循环循环循环循环循环循环循环参数 - 调用游标循环循环循环循环循环循环循环循环参数 ## 1.89. MyBatis 的调用游标循环循环循环循环循环循环循环循环结果 - 调用游标循环循环循环循环循环循环循环循环结果 ## 1.90. MyBatis 的调用游标循环循环循环循环循环循环循环循环引用 - 调用游标循环循环循环循环循环循环循环循环引用 ## 1.91. MyBatis 的调用游标循环循环循环循环循环循环循环循环表达式 - 调用游标循环循环循环循环循环循环循环循环表达式 ## 1.92. MyBatis 的调用游标循环循环循环循环循环循环循环循环语句 - 调用游标循环循环循环循环循环循环循环循环语句 ## 1.93. MyBatis 的调用游标循环循环循环循环循环循环循环循环循环 - 调用游标循环循环循环循环循环循环循环循环循环 ## 1.94. MyBatis 的调用游标循环循环循环循环循环循环循环循环循环变量 - 调用游标循环循环循环循环循环循环循环循环循环变量 ## 1.95. MyBatis 的调用游标循环循环循环循环循环循环循环循环循环参数 - 调用游标循环循环循环循环循环循环循环循环循环参数 ## 1.96. MyBatis 的调用游标循环循环循环循环循环循环循环循环循环结果 - 调用游标循环循环循环循环循环循环循环循环循环结果 ## 1.97. MyBatis 的调用游标循环循环循环循环循环循环循环循环循环引用 - 调用游标循环循环循环循环循环循环循环循环循环引用 ## 1.98. MyBatis 的调用游标循环循环循环循环循环循环循环循环循环表达式 - 调用游标循环循环循环循环循环循环循环循环循环表达式 ## 1.99. MyBatis 的调用游标循环循环循环循环循环循环循环循环循环语句 - 调用游标循环循环循环循环循环循环循环循环循环语句 ## 1.100. MyBatis 的调用游标循环循环循环循环循环循环循环循环循环循环 - 调用游标循环循环循环循环循环循环循环循环循环循环 ## 1.101. MyBatis 的调用游标循环循环循环循环循环循环循环循环循环循环变量 - 调用游标循环循环循环循环循环循环循环循环循环循环变量 ## 1.102. MyBatis 的调用游标循环循环循环循环循环循环循环循环循环循环参数 - 调用游标循环循环循环循环循环循环循环循环循环循环参数 ## 1.103. MyBatis 的调用游标循环循环循环循环循环循环循环循环循环循环结果 - 调用游标循环循环循环循环循环循环循环循环循环循环结果 ## 1.104. MyBatis 的调用游标循环循环循环循环循环循环循环循环循环循环引用 - 调用游标循环循环循环循环循环循环循环循环循环循环引用 ## 1.105. MyBatis 的调用游标循环循环循环循环循环循环循环循环循环循环表达式 - 调用游标循环循环循环循环循环循环循环循环循环循环表达式 ## 1.106. MyBatis 的调用游标循环循环循环循环循环循环循环循环循环循环语句 - 调用游标循环循环循环循环循环循环循环循环循环循环语句 ## 1.107. MyBatis 的调用游标循环循环循环循环循环循环循环循环循环循环循环 - 调用游标循环循环循环循环循环循环循环循环循环循环循环 ## 1.108. MyBatis 的调用游标循环循环循环循环循环循环循环循环循环循环循环变量 - 调用游标循环循环循环循环循环循环循环循环循环循环循环变量 ## 1.109. MyBatis 的调用游标循环循环循环循环循环循环

栏目列表