1. mybatis中#{}和${}的区别

  1. {}: 解析为一个 JDBC 预编译语句(prepared statement)的参数标记符,一个#{}被解析为一个参数占位符,生成sql时会带上单引号。

  2. ${}: 仅仅为一个纯碎的 string 替换,在动态 SQL 解析阶段将会进行变量替换,用于拼接字段名称,例如:order by ${}。

    2. mybatis有几种分页方式

  3. 物理分页

    1. 自己写sql时带上limit
    2. 定义拦截器拼接sql
  4. 逻辑分页 RowBounds

    3. RowBounds是一次性查询全部结果吗?为什么?

    是的,一次性查询全部结果然后内存分页。

    4. mybatis逻辑分页和物理分页的区别是什么?

  5. 逻辑分页是一次性查询全部数据,然后内存中处理;

  6. 物理分页是在数据库中只查询需要的数据。

    5. mybatis是否支持延迟加载?延迟加载的原理是什么?

    6. 说一下mybatis的一级缓存和二级缓存?

    7. mybatis和hibernate的区别有哪些?

    8. mybatis有哪些执行器(Executor)?

    9. mybatis分页插件的实现原理是什么?

    10. mybatis如何编写一个自定义插件?