mybatis面试题 Mybatis 仅可以编写针对ParameterHandler、ResultSetHandler、StatementHandler、Executor这4种接口的插件,My b a t i s 使 用 JD K 的 动 态 代 理 , 为需要拦截的接口生成代理对象以实现接口方法拦截功能,每当执行这 4 种接口对象 的方法时,就会进入 拦 截 方 法 , 具 体 就 是 In v o ca t i o n H a n d l e r 的 in v o k e ( ) 方 法 , 当 然 ,只 会 拦 截 那 些 你 指 定 需 要 拦 截 的 方 法 。实 现 My b a t i s 的 In t e r c e p t o r 接 口 并 复 写 in t e rc e p t ( ) 方 法 , 然 后 在 给 插 件 编 写 注 解 , 指 定 要 拦 截 哪 一 个 接 口 的 哪 些 方 法 Mybatis 是一款流行的持久层框架,它简化了Java应用程序与数据库之间的交互,通过XML或注解方式配置SQL语句,并提供了强大的映射机制。在面试中,Mybatis的相关问题经常出现,以下是一些核心知识点的详细说明: 1. **#{}和${}的区别**: - `#{}`用于预编译处理,它会将SQL中的`#{}`替换为`?`,并使用PreparedStatement的set方法来设置参数,能够防止SQL注入。 - `${}`则是字符串替换,直接将变量的值插入到SQL语句中,存在SQL注入的风险。 2. **Mapper接口的工作原理**: - Mapper接口没有实现类,当调用接口方法时,Mybatis会根据全限名+方法名的规则查找对应的MappedStatement。 - Mybatis使用JDK动态代理为Dao接口生成代理对象proxy,代理对象会在方法调用时拦截,执行对应的MappedStatement所代表的SQL,然后返回结果。 3. **Mybatis的分页处理**: - Mybatis内置的RowBounds对象可以实现内存分页,但这不是真正的物理分页,可能会加载大量数据到内存中。 - 分页插件通过拦截SQL,根据不同的数据库方言(dialect)添加物理分页的SQL片段和参数,实现更高效的物理分页。 4. **结果对象的封装**: - Mybatis通过`<resultMap>`标签定义列名和对象属性的映射关系,或者利用列的别名功能自动匹配对象属性。 - 查询结果通过反射创建目标对象,并根据映射关系给对象的属性赋值,未找到映射关系的属性无法赋值。 5. **Xml映射文件中的其他标签**: - 除了基本的SQL标签,还有如`<trim>`、`<where>`、`<set>`、`<foreach>`等用于动态SQL的标签,以及`<selectKey>`用于生成主键。 6. **Mybatis插件运行原理**: - Mybatis插件只能针对ParameterHandler、ResultSetHandler、StatementHandler、Executor这4种接口编写,通过JDK动态代理生成拦截器。 - 实现Interceptor接口并重写`intercept()`方法,使用`@Intercepts`注解指定需要拦截的接口和方法,最后在Mybatis配置文件中声明插件。 7. **Mybatis的缓存机制**: - **一级缓存**:基于PerpetualCache的HashMap,作用域在SqlSession级别,同一个SqlSession内的多次查询,如果结果未改变,将直接从缓存中获取,提高效率。 - **二级缓存**:全局缓存,跨SqlSession共享,基于 Ehcache 或其他缓存实现,但需要注意并发和数据一致性问题。 这些知识点涵盖了Mybatis的基础操作、安全机制、映射和缓存等关键概念,理解并掌握这些内容对于面试和实际开发都至关重要。在实际项目中,Mybatis还可以与其他框架如Spring整合,实现更高级的功能和优化。
- 粉丝: 6
- 资源: 188
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- DirectX Overlay 的简单基础 .zip
- 1第一章Sympy介绍2(1).ipynb
- DirectX Math SIMD Pascal 数学库.zip
- 计算机网络第三章作业/
- DirectX API 的 Rust 包装器 .zip
- Spring Boot打造全方位家装服务管理平台:一站式解决方案的设计与实现
- 1. excel两张子表A列乱序对比-红色高亮显示不同之处 2. pdf转word 3. 合并多个pdf
- DirectX API 挂钩框架.zip
- DirectX 9 组件框架.zip
- 基于springboot+mybatis后台vue实现的音乐网站项目毕业设计源码+数据库(高分项目)