- 1. mybatis中#{}和${}的区别
- {}: 解析为一个 JDBC 预编译语句(prepared statement)的参数标记符,一个#{}被解析为一个参数占位符,生成sql时会带上单引号。
- 2. mybatis有几种分页方式
- 3. RowBounds是一次性查询全部结果吗?为什么?
- 4. mybatis逻辑分页和物理分页的区别是什么?
- 5. mybatis是否支持延迟加载?延迟加载的原理是什么?
- 6. 说一下mybatis的一级缓存和二级缓存?
- 7. mybatis和hibernate的区别有哪些?
- 8. mybatis有哪些执行器(Executor)?
- 9. mybatis分页插件的实现原理是什么?
- 10. mybatis如何编写一个自定义插件?
1. mybatis中#{}和${}的区别
{}: 解析为一个 JDBC 预编译语句(prepared statement)的参数标记符,一个#{}被解析为一个参数占位符,生成sql时会带上单引号。
${}: 仅仅为一个纯碎的 string 替换,在动态 SQL 解析阶段将会进行变量替换,用于拼接字段名称,例如:order by ${}。
2. mybatis有几种分页方式
物理分页
- 自己写sql时带上limit
- 定义拦截器拼接sql
-
3. RowBounds是一次性查询全部结果吗?为什么?
4. mybatis逻辑分页和物理分页的区别是什么?
逻辑分页是一次性查询全部数据,然后内存中处理;
- 物理分页是在数据库中只查询需要的数据。
5. mybatis是否支持延迟加载?延迟加载的原理是什么?
6. 说一下mybatis的一级缓存和二级缓存?
7. mybatis和hibernate的区别有哪些?
8. mybatis有哪些执行器(Executor)?
9. mybatis分页插件的实现原理是什么?
10. mybatis如何编写一个自定义插件?
