Mybatis面试总结

1、mybatis 中 #{}和 ${}的区别是什么?

  • #{}是预编译处理,${}是字符串替换;
  • Mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值;
  • Mybatis在处理${}时,就是把${}替换成变量的值;
  • 使用#{}可以有效的防止SQL注入,提高系统安全性。

2、mybatis 有几种分页方式?

  1. 数组分页
  2. sql分页
  3. 拦截器分页

3、mybatis 是否支持延迟加载?

Mybatis仅支持association关联对象和collection关联集合对象的延迟加载,association指的就是一对一,

collection指的就是一对多查询。在Mybatis配置文件中,可以配置是否启用延迟加载lazyLoadingEnabled=true|false。

4说一下 mybatis 的一级缓存和二级缓存?

一级缓存: 基于 PerpetualCache 的 HashMap 本地缓存,其存储作用域为 Session,当 Session flush 或 close 之后,该 Session 中的所有 Cache 就将清空,默认打开一级缓存。

二级缓存与一级缓存其机制相同,默认也是采用 PerpetualCache,HashMap 存储,不同在于其存储作用域为 Mapper(Namespace),并且可自定义存储源,如 Ehcache。默认不打开二级缓存,要开启二级缓存,使用二级缓存属性类需要实现Serializable序列化接口(可用来保存对象的状态),可在它的映射文件中配置<cache/> ;

对于缓存数据更新机制,当某一个作用域(一级缓存 Session/二级缓存Namespaces)的进行了C/U/D 操作后,默认该作用域下所有 select 中的缓存将被 clear。

5 mybatis 和 hibernate 的区别有哪些?

(1)Mybatis和hibernate不同,它不完全是一个ORM框架,因为MyBatis需要程序员自己编写Sql语句。

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

(3)Hibernate对象/关系映射能力强,数据库无关性好,对于关系模型要求高的软件,如果用hibernate开发可以节省很多代码,提高效率。

原文地址:https://www.cnblogs.com/caomusheng/p/12657808.html

时间: 2024-10-07 02:54:49

Mybatis面试总结的相关文章

mybatis 面试

1.接口绑定有几种实现方式,分别是怎么实现的? 接口绑定有两种实现方式,一种是通过注解绑定,就是在接口的方法上面加上 @Select@Update等注解里面包含Sql语句来绑定, 另外一种就是通过xml里面写SQL来绑定, 在这种情况下,要指定xml映射文件里面的namespace必须为接口的全路径名. 2.什么情况下用注解绑定,什么情况下用xml绑定? 当Sql语句比较简单时候,用注解绑定, 当SQL语句比较复杂时候,用xml绑定,一般用xml绑定的比较多 3.MyBatis实现一对多有几种方

Mybatisの常见面试题

Mybatis -面试问题 最近准备系统的学一下Mybatis,之前只有粗略的看了下,选了十个常见的面试题 1. #{}和${}的区别是什么? #{}是预编译处理,${}是字符串替换. Mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值: Mybatis在处理时,就是把{}替换成变量的值. 使用#{}可以有效的防止SQL注入,提高系统安全性. ###### 2.Dao接口的工作原理是什么?Dao接口里的方法,参数不同时,方法能重

7年Java老兵闭关整理出430道面试真题,全部掌握阿里也不过如此!

题目基本覆盖了整个Java后端题,因文章篇幅问题,我这里就不解答了,我已把题目整理成pdf文档,内容很全面,有需要的可以 点击这里 获取资料 话不多说,直接往下看↓ ↓ ↓ 一.性能调优面试专栏 1.1.tomcat性能优化整理 你这样给tomcat调优 如何加大comcat连接数 怎样加大tomcat的内存 Tomcat有几种部署方式 Tomcat的优化经验 1.2.JVM性能优化整理 Java类加载过程 Java内存分配 描述一下jVM加载class文件的原理机制? GC是什么?为什么要有G

JAVA面试中问及HIBERNATE与 MYBATIS的对比,在这里做一下总结(转)

hibernate以及mybatis都有过学习,在java面试中也被提及问道过,在项目实践中也应用过,现在对hibernate和mybatis做一下对比,便于大家更好的理解和学习,使自己在做项目中更加得心应手. 第一方面:开发速度的对比 就开发速度而言,Hibernate的真正掌握要比Mybatis来得难些.Mybatis框架相对简单很容易上手,但也相对简陋些.个人觉得要用好Mybatis还是首先要先理解好Hibernate. 比起两者的开发速度,不仅仅要考虑到两者的特性及性能,更要根据项目需求

关于 Mybatis 缓存机制,面试官都未必知道的这么详细

欢迎关注个人微信公众号: 小哈学Java, 文末分享阿里 P8 高级架构师吐血总结的 <Java 核心知识整理&面试.pdf>资源链接!! 个人网站: https://www.exception.site 一.前言 MyBatis是常见的Java数据库访问层框架.在日常工作中,开发人员多数情况下是使用MyBatis的默认缓存配置,但是MyBatis缓存机制有一些不足之处,在使用中容易引起脏数据,形成一些潜在的隐患.个人在业务开发中也处理过一些由于MyBatis缓存引发的开发问题,带着个

[Java面试七]Mybatis总结以及在面试中的一些问题.

1.JDBC编程有哪些不足之处,MyBatis是如何解决这些问题的? ① 数据库链接创建.释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库链接池可解决此问题. 解决:在SqlMapConfig.xml中配置数据链接池,使用连接池管理数据库链接. ② Sql语句写在代码中造成代码不易维护,实际应用sql变化的可能较大,sql变动需要改变java代码. 解决:将Sql语句配置在XXXXmapper.xml文件中与java代码分离. ③ 向sql语句传参数麻烦,因为sql语句的where条件不

面试之hibernate 和mybatis

hibernate 和mybatis 你觉得选哪个?原因? Mybatis优势 MyBatis可以进行更为细致的SQL优化,可以减少查询字段. MyBatis容易掌握,而Hibernate门槛较高. Hibernate优势 Hibernate的DAO层开发比MyBatis简单,Mybatis需要维护SQL和结果映射. Hibernate对对象的维护和缓存要比MyBatis好,对增删改查的对象的维护要方便. Hibernate数据库移植性很好,MyBatis的数据库移植性不好,不同的数据库需要写不

面试之mybatis和hibernate的区别

mybatis是支持普通SQL查询.存储过程和高级映射的优秀持久层框架.封装了 几乎所有的JDBC代码和参数的手工设置 ,以及结果集的检索: 封装了:1,获取连接,执行sql,释放连接. 2,sql的参数设置,属性自动传递参数(例如emp有name和age属性,sql语句写成"insert into emp (name,age) values(#{name},#{age})"就可以了,不用像jdbc                    一样还要用preparedstatement对象

Java面试考点解析(3)-- 数据库篇、Spring+MyBatis整合

-------------------------------   一.数据库基础知识 -------------------------------   1.在进行数据库编程时,连接池有什么作用?  由于创建连接和释放连接都有很大的开销(尤其是数据库服务器不在本地时,每次建立连接都需要进行TCP的三次握手,释放连接需要进行TCP四次握手,造成的开销是不可忽视的),为了提升系统访问数据库的性能,可以事先创建若干连接置于连接池中,需要时直接从连接池获取,使用结束时归还连接池而不必关闭连接,从而避免