JAVA面试题(28)

358 阅读1分钟

    本文首发于cartoon的博客
    转载请注明出处:cartoonyu.github.io/cartoon-blo…

  • 什么是 ORM 框架?
    • ORM全称是Object-Relational Mapping,中文名称为对象-关系映射
    • 使用ORM框架,能大幅度减少数据库操作代码的编写,将主要精力放在对象-关系优化上
    • 常见的ORM框架有hibernate,Mybatis等
  • Mybatis 中 #{}和 ${}的区别是什么?
    • 在程序编译时,#{}会用?代替,${}只是简单的字符串插入
    • #{}作用相当于PrepareStatement,${}作用相当于Statement
    • #{}能在一定程度上防止SQL注入,${}不能
  • Mybatis 有几种分页方式?
    • 逻辑分页
      • 从数据库返回所有条件符合的数据到内存中,在后端通过逻辑进行分页
    • 物理分页
      • 利用limit关键字分批查询数据库符合条件的数据,内存中只存在分页后的数据
    • 拦截器分页、
      • 自定义拦截器实现了拦截所有以ByPage结尾的查询语句
      • 利用获取到的分页相关参数统一在sql语句条件上加上limit分页相关语句
    • RowBounds分页
      • 类似逻辑分页
  • RowBounds 是一次性查询全部结果吗?为什么?
    • RowBounds是一次性查询全部结果
    • 从RowBounds源码看出,RowBounds最大数据量为Integer.MAX_VALUE(2147483647),大概是20亿条
    • 在实际开发不建议使用RowBounds。数据量达到一定程度,RowBounds所造成的内存压力比较大