面试题|Mybatis与MySQL常见面试问题

古城微笑少年丶 2023-09-29 13:27 79阅读 0赞

1.Mybatis的优缺点有哪些?

优点

1.基于SQL语句编程,比较灵活,不会对应用程序或数据库现有设计产生影响,SQL写在XML里,解除SQL与程序代码耦合,便于统一管理。提供xml标签,支持编写动态SQL语句,并可重用。

2.与JDBC相比,减少了大量冗余代码量,不需要手动开关连接

3.很好的与多种数据库兼容

4.提供映射标签,支持对象与数据库的ORM字段关系进行映射;提供对象关系映射标签,支持对象关系组件维护。

缺点

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

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

2.Mybatis与Hibernate有哪些不同?

1.MyBatis不完全是一个ORM框架,因为MyBatis要求程序员自己写SQL语句;Hibernate对象映射能力强,数据库无关性较好,对于关系模型要求高的软件,使用Hibernate开发能节省很多代码,提高效率。

2.MyBatis直接写原生态SQL,可以严格控制SQL执行性能,灵活度高,非常适合对关系数据模型要求不高的软件开发。但是MyBatis无法做到数据库无关性,如果需要实现支持多种数据库的软件,则工作量大。

3.#{}与${}的区别是什么?

#{}是预编译处理,MyBatis在处理时,会将SQL中的#{}替换为?号,调用PreparedStateme的set方法来赋值,能够有效防止SQL注入,提高系统安全性

${}是字符串替换进行直接赋值,无法阻止SQL注入

4.Mybatis缓存中一级缓存与二级缓存

Mybatis有一级缓存与二级缓存,默认情况下一级缓存是开启的,而且不能关闭。一级缓存指的是sqlSession级别的缓存,当在同一个 SqlSession 中进行相同的 SQL 语句查询时,第二次以后的查询不会从数据库查询,而是直接从缓存中获取。当 SqlSession关闭之后,默认将数据放入二级缓存,二级缓存是可以跨 SqlSession 的缓存,是 mapper 级别的缓存。

对于缓存数据更新机制,当某一个作用域进行了C/U/D操作之后,默认该作用域下的缓存被清除,下次查询只能从数据库中进行查询。

===========================================

1.索引的基本原理

索引是存储引擎中用于快速找到记录的一种数据结构.

索引的原理:将无序的数据变成有序的查询

1.把创建了索引的内容进行排序

2.对排序结果生成倒排表

3.在倒排表上拼上数据地址链

4.查询时,先拿到倒排表内容,在取出数据地址链,从而拿到具体数据

2.MySQL聚簇索引与非聚簇索引的区别

聚簇索引:数据与索引都存放在叶子结点中,并且按照一定顺序组织,找到索引也就找到了数据,数据的物理存放

发表评论

表情:
评论列表 (有 0 条评论,79人围观)

还没有评论,来说两句吧...

相关阅读

    相关 mybatis面试

    mybatis面试题 1.mybatis一级缓存和二级缓存 1.一级缓存 一级缓存指的就是sqlsession缓存。一级缓存是默认开启的,它只相对于同一个SqlS

    相关 mybatis面试

    1. 概念 2. 什么是 Mybatis? Mybatis 是一个半 ORM(对象关系映射)框架,它内部封装了 JDBC,开发时只需要关注 SQL 语句本身,不