面试题|Mybatis与MySQL常见面试问题
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聚簇索引与非聚簇索引的区别
聚簇索引:数据与索引都存放在叶子结点中,并且按照一定顺序组织,找到索引也就找到了数据,数据的物理存放
还没有评论,来说两句吧...