基本信息
文件名称:JavaWeb应用程序开发教程(任务驱动式)课件 第7章 基于MyBatis的Web应用程序开发.pptx
文件大小:5.46 MB
总页数:37 页
更新时间:2025-06-18
总字数:约1.45万字
文档摘要

模块7 基于MyBatis的Web应用程序开发

章节导读MyBatis是一款优秀的、基于Java的、开源的、轻量级的数据持久层框架,是JDBC和Hibernate的替代方案。其主要目标是简化JDBC操作,并满足高并发和高响应的要求。Mybatis的前身是Apache的一个开源项目iBatis,由ClintonBegin发布。2010年6月iBatis从Apache迁移到了GoogleCode,并改名为MyBatis,代码于2013年11月迁移到Github。iBatis一词来源于“internet”和“abatis”,是一个基于Java的持久层框架。iBatis提供的持久层框架包括SQLMaps和DataAccessObjects(DAO)。

【问题7-1】MyBatis和JDBC有什么区别?【问题7-6】何谓Mybatis?【问题7-2】何谓框架?【问题7-5】何谓“工厂类”?【问题7-3】何谓数据持久化?【问题7-4】何谓对象关系映射?3释疑解惑

前导知识【知识7-1】MyBatis的主要优点MyBatis的主要优点如下。(1)SQL语句与Java代码的分离。(2)强大的映射能力。(3)支持动态SQL。(4)支持定制化SQL、存储过程及高级映射。(5)支持一级缓存和二级缓存。(6)提供了丰富的API。(7)允许延迟加载,提高系统性能。(8)支持插件,扩展性强。(9)代码量少,学习曲线平缓。

前导知识【知识7-2】MyBatis的缺点虽然MyBatis是一个非常受欢迎的持久层框架,但它也存在一些缺点。(1)没有完全实现ORM。(2)缓存管理有些复杂。(3)对于大型项目,XML配置可能变得冗长。(4)可能存在SQL注入风险。(5)增加了新手的学习成本。(6)和某些框架整合时可能需要额外的配置。(7)过度依赖XML。(8)在数据持久化方面的自动化水平不如其他ORM框架。(9)更换数据库不方便。

前导知识【知识7-3】MyBatis的核心组件(1)SqlSessionFactoryBuilder。这个类可以被实例化、使用和丢弃,一旦创建了SqlSessionFactory就不再需要它了。因此SqlSessionFactoryBuilder实例的最佳作用域是方法内部(也就是局部方法变量)。可以重用SqlSessionFactoryBuilder创建多个SqlSessionFactory实例,但是最好还是不要让其一直存在,以保证所有的XML解析资源可以被释放给更重要的事情。(2)SqlSessionFactory。SqlSessionFactory一旦被创建就在应用的运行期间一直存在,没有任何理由丢弃它或重新创建另一个实例。在应用运行期间不要重复创建SqlSessionFactory,多次重复创建SqlSessionFactory被视为一种编程“坏习惯”。(3)SqlSession。每个线程都应该有它自己的SqlSession实例。SqlSession的实例不是线程安全的,是不能被共享的,所以它的最佳的作用域是请求或方法作用域。绝对不能将SqlSession实例的引用放在一个类的静态字段或实例字段中。(4)Mapper。Mapper是创建出来用来绑定映射语句的接口。Mapper的方法对应SQL映射文件中的一条SQL语句,这些接口在动态代理实现中,开发者无须手动实现,只需定义方法和相应SQL语句即可。(5)Executor。Executor是MyBatis的执行层,负责SQL语句的生成和查询缓存的维护。它主要负责两部分内容,一部分是根据Statementid找到相应的映射语句,将输入的参数转换为SQL语句;另一部分是将SQL语句交给JDBC执行,并将查询结果映射成Java对象返回。

前导知识【知识7-4】MyBatis框架的应用场景MyBatis作为一款优秀的持久层框架,主要应用在以下场景中。(1)需要与关系数据库交互的项目。MyBatis支持对各类SQL查询、更新、删除操作,包括复杂查询、联合查询等,因此对于需要与关系数据库交互的项目,MyBatis是一个很好的选择。(2)需要编写复杂SQL语句的场景。MyBatis允许开发者直接编写原生态SQL语句。相比于其他ORM框架,如Hibernate,MyBatis更适合需要编写复杂SQL语句的场景。(3)需要进行SQL性能优化的场景。在MyBatis中,SQL语句是可见的,开发者可以直接对SQL语句进行优化。因此,对于需要进行SQL性能优化的场景,MyBatis也是一个不错的选择。(4)需要缓存优化的场景。MyBatis提供了一级缓存和二级缓存的功能,可以有效地提升数据库查询的效率。例如,在一个电商网站中,商品的信息一般变动较小,但