java面试题之Mybatis

Mybatis的SQL优化和缓存配置更直接,而Hibernate的缓存机制相对全面,但可能需要更小心处理脏数据问题。最后,Mybatis的Executor类型包括SimpleExecutor(单次执行)、ReuseExecutor(重复使用)和BatchExecutor(批处理),配置文件或方法参数可以指定使用哪种。分页插件通过拦截SQL并添加分页语句来实现。
java面试题之Mybatis
在Mybatis中,#{}和${}是两种不同的表达方式。#{}是预编译处理,当在SQL语句中使用时,MyBatis会将其替换为“?”,配合PreparedStatement的set方法,有效防止SQL注入,确保程序安全。#{}中的内容会被作为字符串处理,并加上引号,以预编译方式传递。而${}则是直接拼接,可能会导致SQL注入的风险。

Mybatis支持两种分页方式:逻辑分页和物理分页。逻辑分页通过RowBounds实现,一次查询大量数据,再在内存中筛选;物理分页包括直接SQL语句分页和使用插件(如PageHelper)进行分页,后者更利于性能优化,但数据库驱动的Fetch Size限制了一次性获取的数据量,避免内存溢出。

四种分页方式有:通过数组获取所有数据后分页,通过SQL语句直接添加分页条件,利用RowBounds实现分页,以及使用拦截器动态配置分页参数。RowBounds简单易用,拦截器实现最优,能统一处理所有分页请求,减少错误风险。

RowBounds并非一次性查询所有数据,而是通过Fetch Size分批获取,以减少内存压力。逻辑分页(如MyBatis的RowBounds)与物理分页(如数据库的limit)在效率和数据库压力上有不同,具体选择取决于数据量和性能需求。

Mybatis支持延迟加载,主要针对一对一(association)和一对多(collection)关联对象,通过创建代理对象在需要时动态查询,以提高性能。一级缓存存储单个SqlSession内的结果,而二级缓存在namespace和mapper级别共享,提高查询效率。

MyBatis与Hibernate相比,两者都支持事务处理,但Hibernate更自动化,MyBatis更灵活但需要关注更多细节。Mybatis的SQL优化和缓存配置更直接,而Hibernate的缓存机制相对全面,但可能需要更小心处理脏数据问题。

最后,Mybatis的Executor类型包括SimpleExecutor(单次执行)、ReuseExecutor(重复使用)和BatchExecutor(批处理),配置文件或方法参数可以指定使用哪种。分页插件通过拦截SQL并添加分页语句来实现。2024-08-20
mengvlog 阅读 57 次 更新于 2025-10-30 10:16:31 我来答关注问题0
  •  文暄生活科普 Java常见面试题整理(带答案)——Mybatis

    1. 什么是Mybatis?Mybatis是一个半ORM(Object Relational Mapping)框架,内部封装了JDBC,开发时只需关注SQL语句本身。程序员直接编写原生态SQL,严格控制SQL执行性能,灵活性高。2. Mybatis的优缺点是什么?优点:可以编写原生SQL,严格控制SQL执行性能,灵活性高。SQL语句解除与代码的耦合,便于统一管...

  •  翡希信息咨询 【2023最新Java大厂面试题】——MyBatis面试题,看完拿捏面试官

    2023最新Java大厂MyBatis面试题要点如下:MyBatis简介:MyBatis是一个半ORM框架,它简化了JDBC操作。程序员在使用MyBatis时,主要关注SQL语句的编写,无需处理数据库连接和参数管理。MyBatis的优点:灵活的SQL编程:允许程序员编写原生SQL语句,提供了高度的灵活性。减少代码量:通过XML或注解配置,减少了繁琐...

  • 在面试中,被问及Java Spring和MyBatis的优缺点是一个常见的问题。Spring框架以其MVC层的强大功能著称,它允许开发者专注于MVC编程,而不必过多关注其他细节,极大地简化了开发过程。Spring的参数封装和返回给前端的数据处理也非常出色,使得数据传递更加高效和准确。MyBatis则以其强大的数据库兼容性和SQL...

  •  文暄生活科普 答完Mybatis这个问题后,面试官居然直接叫我回去等通知……

    面试官可能进一步追问的问题及回答Mybatis中除了JDK动态代理,还有其他实现方式吗?答案:除了JDK动态代理,Mybatis还可以使用CGLIB动态代理。但是,在大多数情况下,Mybatis默认使用JDK动态代理。当Mapper接口中的方法有接口实现类(即不是纯粹的接口方法)时,或者当目标类没有实现接口时,Mybatis会使用CGLIB...

  •  翡希信息咨询 每日一道面试题-Mybatis与JPA的区别?

    一、ORM映射方式不同 Mybatis:Mybatis是一个半自动的ORM框架。它提供了数据库与结果集的映射功能,但开发者需要手动编写SQL语句来完成数据的增删改查操作。这种半自动的方式给予了开发者极大的灵活性,可以精确地控制SQL语句的执行和结果的映射。JPA(Hibernate):JPA则是一个全自动的ORM框架。它提供了...

檬味博客在线解答立即免费咨询

Java相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部