MyBatis常见面试问题,以及和hibernate 的区别等_mybatis和hiberbate区别面试_my_styles的博客-CSDN博客*1、什么是MyBatis?*答:MyBatis是一个可以自定义SQL、存储过程和高级映射的持久层框架。*2、讲下MyBatis的缓存*答:MyBatis的缓存分为一级缓存和二级缓存,一级缓存放在session里面,默认就有,二级缓存放在它的命名空间里,默认是不打开的,使用二级缓存属性类需要实现Serializable序列化接口(可用来保存对象的状态),可在它的映射文件中配置*3、Mybatis是如何进行分页的?分页插件的原理是什么?*答:1)Mybatis使用RowBounds对象进行分页_mybatis和hiberbate区别面试https://blog.csdn.net/qq_36961226/article/details/112802767
*9、MyBatis与Hibernate有哪些不同?*
答:
1)Mybatis和hibernate不同,它不完全是一个ORM框架,因为MyBatis需要程序员自己编写Sql语句,不过mybatis可以通过XML或注解方式灵活配置要运行的sql语句,并将java对象和sql语句映射生成最终执行的sql,最后将sql执行的结果再映射生成java对象。
2)Mybatis学习门槛低,简单易学,程序员直接编写原生态sql,可严格控制sql执行性能,灵活度高,非常适合对关系数据模型要求不高的软件开发,例如互联网软件、企业运营类软件等,因为这类软件需求变化频繁,一但需求变化要求成果输出迅速。但是灵活的前提是mybatis无法做到数据库无关性,如果需要实现支持多种数据库的软件则需要自定义多套sql映射文件,工作量大。
3)Hibernate 对象/关系映射能力强,数据库无关性好,对于关系模型要求高的软件(例如需求固定的定制化软件)如果用hibernate开发可以节省很多代码,提高效率。但是Hibernate的缺点是学习门槛高,要精通门槛更高,而且怎么设计O/R映射,在性能和对象模型之间如何权衡,以及怎样用好Hibernate需要具有很强的经验和能力才行。
总之,按照用户的需求在有限的资源环境下只要能做出维护性、扩展性良好的软件架构都是好架构,所以框架只有适合才是最好。
问题:怎么学习Hibernate?
11、MyBatis
#myabtis和mybatisplus
Mybatis和Mybatis Plus都是Java语言中的ORM框架,用于简化数据库操作。其中,Mybatis是一个轻量级的ORM框架,它通过XML或注解的方式将Java对象映射到数据库表中;而Mybatis Plus则是在Mybatis的基础上进行了封装,提供了更加便捷的操作方式和更加强大的功能。
相比于Mybatis,Mybatis Plus具有以下优点:
1. 提供了更加便捷的CRUD操作,例如自动生成SQL语句、自动分页等;
2. 提供了更加强大的查询功能,例如Lambda表达式查询、条件构造器等;
3. 提供了更加丰富的插件机制,例如性能分析插件、乐观锁插件等。
*myabtis和mybatisplus面试题
好的,请问您的问题是关于MyBatis和MyBatis Plus的面试题,还是您想了解这两个框架的区别和使用场景呢?
如果是前者,我可以为您提供一些常见的MyBatis和MyBatis Plus面试题:
1. MyBatis中#{}和${}的区别是什么?
2. MyBatis中如何进行分页查询?
3. MyBatis中如何进行一对多和多对多的关联查询?
4. MyBatis Plus中的Wrapper是什么?有哪些常用的Wrapper?
5. MyBatis Plus中如何进行分页查询?
6. MyBatis Plus中如何进行一对多和多对多的关联查询?
如果是后者,我可以为您简单介绍一下这两个框架的区别和使用场景:
MyBatis是一个半自动化的ORM框架,它通过XML或注解的方式将Java对象映射到数据库表中,提供了灵活的SQL编写方式和强大的动态SQL支持,但需要手动编写大量的SQL语句。
MyBatis Plus是在MyBatis基础上进行了封装和扩展,提供了更加便捷的CRUD操作、强大的条件构造器、代码生成器等功能,可以大大提高开发效率。但相对于MyBatis来说,MyBatis Plus的灵活性可能会稍有降低。
使用场景上,如果您的项目需要进行复杂的SQL编写和动态SQL拼接,或者您对ORM框架的灵活性有较高的要求,那么可以选择MyBatis;如果您的项目需要进行大量的CRUD操作,或者您对开发效率有较高的要求,那么可以选择MyBatis Plus。
*关于Mybatis和Mybatis Plus的常见面试题。
1. Mybatis和Mybatis Plus有什么区别?
Mybatis是一个基于Java的持久层框架,它通过XML或注解的方式将Java对象映射到数据库中的数据。而Mybatis Plus是在Mybatis的基础上进行了封装,提供了更加便捷的操作数据库的方式,例如自动生成代码、分页查询、条件构造器等。
2. Mybatis Plus的主键生成策略有哪些?
Mybatis Plus提供了多种主键生成策略,包括:
- 自增主键:使用数据库自增长字段作***一ID。
- 分布式全局唯一ID:使用美团Leaf算法生成分布式全局唯一ID。
3. Mybatis Plus的分页查询怎么实现?
Mybatis Plus提供了Page类来实现分页查询,具体步骤如下:
- 创建Page对象,并设置当前页码和每页显示数量。
- 调用mybatis plus提供的selectPage方法,传入Page对象和查询条件。
- 将查询结果封装到Page对象中,返回给前端。
*21、模糊查询like语句该怎么写*
答:
1)在java中拼接通配符,通过#{}赋值
2)在Sql语句中拼接通配符 (不安全 会引起Sql注入)
*MyBatis 中 #{}和 ${}的区别是什么?
#{}是预编译处理,${}是字符替换。 在使用 #{}时,MyBatis 会将 SQL 中的 #{}替换成“?”,配合 PreparedStatement 的 set 方法赋值,这样可以有效的防止 SQL 注入,保证程序的运行安全。
*MyBatis 有几种分页方式?
分页方式:逻辑分页和物理分页。 逻辑分页: 使用 MyBatis 自带的 RowBounds 进行分页,它是一次性查询很多数据,然后在数据中再进行检索。 物理分页: 自己手写 SQL 分页或使用分页插件 PageHelper,去数据库查询指定条数的分页数据的形式。
*MyBatis 分页插件的实现原理是什么?
分页插件的基本原理是使用 MyBatis 提供的插件接口,实现自定义插件,在插件的拦截方法内拦截待执行的 SQL,然后重写 SQL,根据 dialect 方言,添加对应的物理分页语句和物理分页参数。
*MyBatis 逻辑分页和物理分页的区别是什么?
逻辑分页是一次性查询很多数据,然后再在结果中检索分页的数据。这样做弊端是需要消耗大量的内存、有内存溢出的风险、对数据库压力较大。 物理分页是从数据库查询指定条数的数据,弥补了一次性全部查出的所有数据的种种缺点,比如需要大量的内存,对数据库查询压力较大等问题。
*说一下 MyBatis 的一级缓存和二级缓存?
一级缓存:基于 PerpetualCache 的 HashMap 本地缓存,它的声明周期是和 SQLSession 一致的,有多个 SQLSession 或者分布式的环境中数据库操作,可能会出现脏数据。当 Session flush 或 close 之后,该 Session 中的所有 Cache 就将清空,默认一级缓存是开启的。 二级缓存:也是基于 PerpetualCache 的 HashMap 本地缓存,不同在于其存储作用域为 Mapper 级别的,如果多个SQLSession之间需要共享缓存,则需要使用到二级缓存,并且二级缓存可自定义存储源,如 Ehcache。默认不打开二级缓存,要开启二级缓存,使用二级缓存属性类需要实现 Serializable 序列化接口(可用来保存对象的状态)。 开启二级缓存数据查询流程:二级缓存 -> 一级缓存 -> 数据库。 缓存更新机制:当某一个作用域(一级缓存 Session/二级缓存 Mapper)进行了C/U/D 操作后,默认该作用域下所有 select 中的缓存将被 clear。