本文准备了一系列MyBatis相关面试题及其答案。
什么是 MyBatis ?
- 答
MyBatis
是一款优秀的持久层框架,它支持定制化SQL
、存储过程以及高级映射。MyBatis
避免了几乎所有的JDBC
代码和手动设置参数以及获取结果集。MyBatis
可以使用简单的XML
或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
- 关键词
- 持久层框架
- 避免大量
JDBC
代码、手动设置参数以及获取结果集 - 使用
XML
或注解把原生类型、接口、Java
对象映射为数据库中的记录
MyBatis 的优缺点 ?
优点
- 答
- 1、与
JDBC
相比,减少了50%以上的代码量。 - 2、
MyBatis
是最简单的持久化框架,小巧并且简单易学。 - 3、
MyBatis
相当灵活,不会对应用程序或者数据库的现有设计强加任何影响,SQL
写在XML
里,从程序代码中彻底分离,降低耦合度,便于统一管理和优化,并可重用。 - 4、提供
XML
标签,支持编写动态SQL
语句。 - 5、提供映射标签,支持对象与数据库的
ORM
字段关系映射。
- 1、与
- 关键词
- 减少
JDBC
代码 - 简单易学
SQL
与程序代码解耦- 支持动态
SQL
- 提供映射标签
- 减少
缺点
- 答
- 1、
SQL
语句的编写工作量较大,尤其是字段多、关联表多时,更是如此,对开发人员编写SQL
语句的功底有一定要求。 - 2、
SQL
语句依赖于数据库,导致数据库移植性差,不能随意更换数据库。
- 1、
- 关键词
- 需要编写大量
SQL
- 可移植性差
- 需要编写大量
MyBatis 适用场景 ?
- 答
MyBatis
专注于SQL
本身,是一个足够灵活的DAO
层解决方案。- 对性能的要求很高,或者需求变化较多的项目,如互联网项目,
MyBatis
将是不错的选择。
- 关键词
- 要求性能
- 需求变化多
- 互联网
MyBatis 与 Hibernate 有哪些不同 ?
- 关键词
- 自动化程度,
MyBatis
是半自动化,而Hibernate
是全自动化 - 可移植性,
Hibernate
可移植性远远大于MyBatis
(因为MyBatis
需要自己编写SQL
) - 灵活性,
MyBatis
灵活性比Hibernate
高(因为MyBatis
SQL
是自己编写的 ) - 简单易用性,
MyBatis
占优 - 代码量,
Hibernate
占优 - 缓存方面,
- 自动化程度,
#{} 与 ${} 的区别是什么 ?
- 答
#{}
是预编译处理,${}
是字符串替换MyBatis
在处理#{}
时,会将#{}
替换为?
,调用PreparedStatement
的set
方法来赋值MyBatis
在处理${}
时,会将${}
替换为变量的值SQL
注入是发生在编译的过程中,#{}
可以有效的防止SQL注入
- 关键词
- 预编译
SQL
注入
模糊查询 like 语句怎么写 ?
- 三种方法如下:
like '%${}%'
like "%"#{}"%"
like CONCAT('%', #{}, '%')
- 总结:推荐第三种,第一种不能防止
SQL
注入,第二种不美观(哈哈)
本文完。