Mybatis常见面试题总结
Mybatis到底是啥呢?
- Mybatis是一个半ORM(对象关系映射)框架,它封装了JDBC,加载驱动,连接创建等操作,使得开发者只需要关注SQL的编写,可以对SQL进行复杂优化,灵活度高;(Hibernate根据实体类来生成对应的SQL导致无法进行SQL调优,而Mybatis则是开发者手动编写SQL)
- Mybatis有XML,注解两种方式来配置映射原生信息,将POJO映射成数据库中的记录,避免了几乎所有的JDBC代码和手动设置参数以及获取结果集;
- 通过XML或者注解的方式将要执行的各种Statement配置,并且通过Entity实体类和Statement的SQL动态参数进行映射生成最终执行的SQL,最终Mbatis框架执行SQL并且将结果映射为Java对象返回;(简单来说就是从执行SQL到返回ResultSet的过程)
Mybatis的优点与缺点
优点:
- 开发者编写SQL,灵活性高,不会对应用程序或者数据库的现有设计造成任何影响,SQL写在XML或者使用注解,解除了SQL与程序代码的耦合,便于统一管理;提供XML标签支持编写动态SQL语句,且可以重用
- 与原生JDBC操作相比,减少了百分之五十以上的代码量,消除了JDBC大量冗余代码,不需要再手动开关连接
- 能够很好的集成Spring,并且兼容各种数据库
缺点:
- SQL语句的编写工作量大,尤其是字段多,关联表时,对开发者的SQL功底比较有考验
- SQL语句依赖于数据库导致移植性差,不能随意更换数据库
#{}与${}的区别?
- ${}是字符串替换,#{}是预处理
- Mybatis在处理${}的时候,是把${}直接替换成变量的值,而处理#{}的时候,会对SQL进行预处理,将SQL中的#{}替换为?号,调用PreparedStatement的set方法来赋值,有效的防止了SQL注入,提高系统安全
未完待续。。。。。。。
//TODO
//TODO
//TODO
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 九世!
评论