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