MyBatis基础面试题

一、什么是MyBatis或者理解

MyBatis是一款轻量级的半自动化对象关系映射(ORM)框架,它主要用于Java应用程序中的数据持久层,它提供了一种高效的方式来管理数据库操作,避免了手动编写大量重复的JDBC代码

简单点来讲,就是内部封装了JDBC,开发时只需要关注SQL语句本身,不需要花费精力去处理加载驱动、创建连接等繁杂的过程

  1. 概念与作用:MyBatis主要用于Java应用程序中的数据持久层,它提供了一种高效的方式来管理数据库操作,避免了手动编写大量重复的JDBC代码。
  2. 自定义SQL:MyBatis允许开发者自行编写SQL语句,这样可以根据具体需求优化查询性能,提供灵活性和控制性。
  3. 支持存储过程:MyBatis不仅支持标准的SQL语句,还支持调用数据库的存储过程,使得复杂的数据库操作更加便捷。
  4. 高级映射功能:MyBatis能够将数据库中的记录映射到Java的POJOs(Plain Ordinary Java Objects,普通Java对象),同时也支持高级的映射策略,如关联映射、结果集的自动封装等。
  5. 配置方式:MyBatis的配置可以通过XML文件或注解来完成,这使得框架的使用更加灵活,可以根据项目需求选择最合适的配置方式。
  6. 优缺点:MyBatis的优点在于其轻量级、灵活且易于控制SQL细节,但相应的,它也需要开发者具备一定的SQL编写能力。由于是半自动化的ORM框架,相比于全自动ORM框架,MyBatis可能需要更多的手动配置和编码工作。
  7. 适用场合:MyBatis适用于那些需要灵活处理数据库操作、追求高性能以及愿意手写SQL语句的场合。
  8. 与其他ORM框架比较:相较于其他ORM框架,如Hibernate,MyBatis提供了更多的灵活性和对SQL的控制,但相对地,它也需要更多的手动干预。选择使用哪个框架取决于项目的具体需求和团队的技术偏好

二、Mybaits的优点

 1、基于 SQL 语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任 何影响,SQL 写在 XML里,解除 sql与程序代码的耦合,便于统一管理;提供 XML 标签,支持编写动态SQL语句,并可重用

2、与 JDBC 相比,减少了 50%以上的代码量,消除了JDBC大量冗余的代码,不 需要手动开关连接

3、很好的与各种数据库兼容(因为MyBatis使用 JDBC来连接数据库,所以只要 JDBC 支持的数据库 MyBatis 都支持)

4、能够与 Spring 很好的集成

5、提供映射标签,支持对象与数据库的ORM字段关系映射;提供对象关系映射 标签,支持对象关系组件维护

三、MyBatis框架的缺点

1、SQL 语句的编写工作量较大,尤其当字段多、关联表多时,对开发人员编写 SQL 语句的功底有一定要求

2、SQL 语句依赖于数据库,导致数据库移植性差,不能随意更换数据库

四、MyBatis框架适用场合

1、MyBatis 专注于 SQL 本身,是一个足够灵活的 DAO层解决方案

2、对性能的要求很高,或者需求变化较多的项目,如互联网项目,MyBatis将是 不错的选择

五、MyBatis是如何进行分页的

数据进行分页是最基础的功能,一般可以把分页分成两类:

1、 逻辑分页,先查询出所有的数据缓存到内存,再根据业务相关需求,从内存数据中 筛选出合适的数据进行分页。

2、 物理分页 ,直接利用数据库支持的分页语法来实现,比如Mysql里面提供了分页关键词Limit

Mybatis 提供了四种分页方式:

1、在MybatisMapper配置文件里面直接写分页SQL,这种方式比较灵活,实现也简单。

2、 RowBounds实现逻辑分页,也就是一次性加载所有符合查询条件的目标数据,根 据分页参数值在内存中实现分页。 当然,在数据量比较大的情况下,JDBC驱动本身会做一些优化,也就是不会把所有结 果存储在ResultSet里面, 而是只加载一部分数据,再根据需求去数据库里面加载。 这种方式不适合数据量较大的场景,而且有可能会频繁访问数据库造成比较大的压力。

3、Interceptor拦截器实现,通过拦截需要分页的select语句,然后在这个sql语句 里面动态拼接分页关键字,从而实现分页查询。 (如图)Interceptor是Mybatis提供的一种针对不同生命周期的拦截器,比如: 拦截执行器方法 、拦截参数的处理、拦截结果集的处理 、拦截SQL语法构建的处理 我们可以拦截不同阶段的处理,来实现Mybatis相关功能的扩展。 这种方式的好处,就是可以提供统一的处理机制,不需要我们再单独去维护分页相关的 功能。

4、 插件(PageHelper)及(MyBaits-Plus、tkmybatis)框架实现 这些插件本质上也是使用Mybatis的拦截器来实现的。 只是他们帮我们实现了扩展和封装,节省了分页扩展封装的工作量,在实际开发中,只 需要拿来即用即可

用简单的话来说就是

有三种方式来实现分页:

第一种,直接在Select语句上增加数据库提供的分页关键字,然后在应用程序里面传递当前页,以及每页展示条数即可。

第二种,使用Mybatis提供的RowBounds对象,实现内存级别分页。

第三种,基于Mybatis里面的Interceptor拦截器,在select语句执行之前动态拼接分页关键字。

六、#{}和${}的区别是什么

 1、#{}是预编译处理,${}是字符串替换。

2、Mybatis 在处理#{}时,会将 sql 中的#{}替换为?号,调用 PreparedStatement 的 set 方法来赋值;

3、Mybatis 在处理${}时,就是把${}替换成变量的值。 使用#{}可以有效的防止 SQL注入,提高系统安全性

  • 21
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值