MyBatis_MyBatis之相关面试题

1.MyBatis框架的优缺点

MyBatis框架的优点:

(1)基于SQL语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任何影响,SQL写在XML里,解除sql与程序代码的耦合,便于统一管理;

         提供XML标签,支持编写动态SQL语句,并可重用。

(2)与JDBC相比,消除了JDBC大量冗余的代码,不需要手动开关连接;

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

(4)能够与Spring很好的集成;

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

MyBatis框架的缺点:

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

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

扫描二维码关注公众号,回复: 13544201 查看本文章

MyBatis框架适用场合:

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

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

2.MyBatis框架和其他框架的区别在哪里?主要是和原生的JDBC和Hibernate之间的区别。

可参考:https://blog.csdn.net/u013185175/article/details/107000868

(1).JDBC:

     JDBC是较为传统(或者是原生)的操作数据库的方式,功能简单,其特点是sql语句编写在java代码中,当我们需要优化sql的时候,我们需要把优化的sql重新写进去,然后编译、打包、部署、运行等需要一连串的操作。

(2).Hibernate:

      Hibernate是一种全自动的ORM(Object Relation Mapping)框架,也就是他会把每一条数据库的记录和我们的java对象进行一个映射关系。旨在消除SQL,它的操作就是把传统的数据操作自己封装在一个黑匣中,然后我们只要提供数据对象以及所需的HQL,那么我们就可以获取到我们所需的结果。这样就会产生另一些问题:

A:Hibernate自己编写的SQL不一定是最优的SQL,那么当我们发现这一条SQL可以优化的时候,我们无法进行优化的操作。

B.对结果的处理。由于HIbernate的全映射,那么当我们只需要一张数据库表中的部分字段的时候,hibernate会把我们整条记录所有字段都查询出来。这样无疑又把不需要的字段查询出来。(需要学精通HQL才可以完成)

(3).MyBatis

     Mybatis直接编写原生态sql,可以严格控制sql执行性能,灵活度高,非常适合对关系数据模型要求不高的软件开发,因为这类软件需求变化频繁,一但需求变化要求迅速输出成果。但是灵活的前提是mybatis无法做到数据库无关性,如果需要实现支持多种数据库的软件,则需要自定义多套sql映射文件,工作量大。

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

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

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

select username,password from user where username = #{username}; 

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

select username,password from user where username = '${username}'; 

猜你喜欢

转载自blog.csdn.net/u013185175/article/details/113789904