mybatis面试题

1.什么是mybatis==mybatis是什么

mybatis是一个优秀的持久层框架

它支持自定义 SQL、存储过程以及高级映射

MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作

MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录

2.ORM是什么

ORM(Object Relational Mapping),对象关系映射,是一种为了解决关系型数据库数据与java对象的映射关系的技术,专业点说,ORM是通过描述对象和数据库之间的元数据,将程序中的对象自动持久化到关系型数据库中,

3.全自动与半自动

全自动:查询关联对象或者关联集合时,可以根据对象关系模型直接获取。

半自动:查询关联对象或者关联集合时,需要手动编写sql来完成,来获取数据

4.传统JDBC并非存在的问题

使用jdbc步骤:加载JDBC驱动程序 → 建立数据库连接Connection → 创建执行SQL的语句Statement → 处理执行结果ResultSet → 释放资源。

1.jdbc需要自己实现连接池

2.定义sql语句比较麻烦,因为和java代码在一起

3.jdbc中where语句,没有mybatis中where语句处理方便。

4.jdbc的结果集处理存在从重复代码,如果映射成java对象hi比较方便处理。

5.mybatis处理这些问题

1.使用数据库连接池 在mybatis-config.xml

中配置,使用数据库连接池管理数据库的连接(何时连接:看源代码:在jdb事务开启之前,在指向具体业务的时候创建连接)与关闭(Sqlsession对象关闭连接关闭,连接放回连接池)

2.在.xml编写代码使得yujava代码分离

3.在xml会自动判断条件是否成立,从而加and符号

4.mybatis自动将sql执行结果映射至java对象中

6.mybatis优点

sql语句灵活

更好与数据库兼容(因为mybatis支持jdbc所有,jdbc支持的数据库,mybatis都支持)

数据库连接与关闭时自动的

sql与java代码分离,mybatis提高许多映射标签(数据库与对象的ORM映射关系,对象映射关系,还有一个对象与组件维护(不了解))

能过很好与spring集成

7.mybatis缺点

对开发人员编写sql语句功底有一定的要求

因为sql语句依赖数据库,所有数据库可移植性查

8.mybatis的解析原理和运行原理

加载全局配置文件->resource获取加载全局文件->实例化SqlSessionFactoryBuild->build解析配置流->Configuration根据全部信息,返回一个SqlSessionFactory->根据返回的结果创建SqlSession实例->事务管理器->创建sql执行器->执行增删改查->执行成功便提交事务关闭SqlSession,如果不成功报错呗(这个流程又回到事务管理器哪里,调节语句)

mybatis的功能架构是构成

个人总结:接受请求-处理数据-还有些基础功能(缓存这些,事务管理)

API接口层:提供外部使用的接口API,开发人员通过这些本地API来操作数据库。接口层一接受到调用请求就会调用数据处理层来完成具体的数据处理。

数据处理层:负责具体的SQL查找,SQL的解析,SQL执行和执行结果映射处理等。它主要的目的是根据调用的请求完成一次数据库操作。

基础支撑层:负责最基础的功能支撑,包括连接管理、事务管理、配置加载和缓存处理,这些都是共用的东西,将他们抽取出来作为最基础的组件。为上层的数据处理层提供最基础的支撑。

mybatis框架架构设计是怎样的

个人总结:就是sql执行的开始与结束

  • 加载配置 :配置来源有两个:一个是配置文件.xml,还有一个就是java代码注解,将sql的配置信息加载成为一个个MappedStatement对象(包含传入参数映射配置,执行sql语句,结果映射配置),存储在内存中。
  • sql解析:api接口层接受到请求时,会接受到sql的id和传入对象(就是数据类型…),mytbatis会根据sql的id找到对应的MappedStatement,然后根据传入的参数对象对MappedStatement进行解析,解析后可以得到最终要执行的sql语句和参数。
  • sql执行&#x
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值