本文介绍: Java面试题10总结
1.MyBatis 中 #{}和 ${}的区别是什么?
#{} 是预编译的占位符,MyBatis会将其转化为一个占位符参数,安全性较高,可以防止 SQL注入; ${} 是字符串替换,直接将内容替换到SQL语句中,不会进行参数处理,潜在风险是 SQL注入
在 MyBatis 中,#{} 和 ${} 都被用作参数绑定,但它们在处理参数的方式和安全性上有很大的区别:
总结一下,#{}
比${}
更安全,因为它通过预编译的方式处理参数,可以防止 SQL 注入。除非在你完全确定没有 SQL 注入风险的情况下,一般情况下我们更推荐使用#{}
。
2.MyBatis 有几种分页方式?
MyBatis有两种分页方式,一种是使用 RowBounds 进行内存分页,另一种是使用插件进行物理分页。
RowBounds 是 MyBatis 中的一个分页对象,它可以将所有符合条件的数据全都查询到内存中,然后在内存中对数据进行分页。然而,这种分页操作是对 ResultSet 结果集进行分页,也就是人们常说的逻辑分页,而非物理分页,效率低下,不建议使用。
3.RowBounds 是一次性查询全部结果吗?为什么?
4.MyBatis 逻辑分页和物理分页的区别是什么?
5.MyBatis 是否支持延迟加载?延迟加载的原理是什么?
6.说一下 MyBatis 的一级缓存和二级缓存?
7.MyBatis 和 Hibernate 的区别有哪些?
8.MyBatis有哪些执行器(Executor)?
9.MyBatis 分页插件的实现原理是什么?
10.MyBatis 如何编写一个自定义插件?
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。