Mybatis面试题

47 阅读1分钟

8.Mybatis的优缺点:

  • 优点:

    • 简单易学,容易上手
    • 提供了很多第三方插件
    • 能够与Spring很好的集成
    • 消除了JDBC大量冗余的代码
    • 后期维护简单
  • 缺点:

    • 字段多、关联表多时,SQL语句的编写工作量较大
    • 数据库移植性差

13.在Mybatis中$和#有什么区别:

  • 使用$设置参数时:

    • ${}是字符串替换
    • Mybatis在处理时,就是把{}时,就是把{}替换成变量的值
    • 动态指定SQL语句的列名等场景使用
  • 使用#设置参数时:

    • #{}是预编译处理
    • Mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值
    • 执行效率高,并且可以防止SQL注入,提高系统安全性

14.Mybatis和hibernate的区别:

  • 相同点:都是对JDBC的封装,都是持久层框架,都是用于Dao层开发

  • 不同点:

    • Mybatis是一个半自动ORM持久层框架,是轻量级框架,多表配置简单,对数据库移植性差,后期SQL维护容易
    • hibernate是一个全自动ORM持久层框架,是重量级框架,多表配置复杂,对数据库移植性好,后期SQL维护困难

7.介绍一下Mybatis的缓存机制:

  • 一级缓存:默认启动且不能关闭,也称为本地缓存,在SqlSession里面
  • 二级缓存:默认不启动,在nameSpace里面
  • 开启二级缓存后,一级缓存拿到数据库的数据二级缓存也会拥有,但是当执行了增删改操作,会删除session的一级缓存的数据;先找二级缓存的数据,二级没有找一级,一级没有找数据库。