美文网首页程序员
Java面试——2018年MyBatis常见实用面试题!

Java面试——2018年MyBatis常见实用面试题!

作者: 玩大数据的小轩 | 来源:发表于2018-11-30 14:39 被阅读11次

    1、什么是MyBatis?

    答:MyBatis是一个可以自定义SQL、存储过程和高级映射的持久层框架。

    2、讲下MyBatis的缓存

    答:MyBatis的缓存分为一级缓存和二级缓存,一级缓存放在session里面,默认就有,二级缓存放在它的命名空间里,默认是不打开的,使用二级缓存属性类需要实现Serializable序列化接口(可用来保存对象的状态),可在它的映射文件中配置<cache/>

    3、Mybatis是如何进行分页的?分页插件的原理是什么?

    答:

    1)Mybatis使用RowBounds对象进行分页,也可以直接编写sql实现分页,也可以使用Mybatis的分页插件。

    2)分页插件的原理:实现Mybatis提供的接口,实现自定义插件,在插件的拦截方法内拦截待执行的sql,然后重写sql。

    举例:select * from student,拦截sql后重写为:select t.* from (select * from student)t limit 0,10

    4、简述Mybatis的插件运行原理,以及如何编写一个插件?

    答:

    1)Mybatis仅可以编写针对ParameterHandler、ResultSetHandler、StatementHandler、Executor这4种接口的插件,Mybatis通过动态代理,为需要拦截的接口生成代理对象以实现接口方法拦截功能,每当执行这4种接口对象的方法时,就会进入拦截方法,具体就是InvocationHandler的invoke()方法,当然,只会拦截那些你指定需要拦截的方法。

    2)实现Mybatis的Interceptor接口并复写intercept()方法,然后在给插件编写注解,指定要拦截哪一个接口的哪些方法即可,记住,别忘了在配置文件中配置你编写的插件。

    我自己是一名大数据架构师,目前辞职在做线上教育大数据讲师,每天都会直播分享免费公开课,大家可以加群参加。以及我自己整理了一套最新的大数据学习系统教程,包括Hadoop,数据挖掘,数据分析。送给正在学习大数据的小伙伴!这里是大数据学习者聚集地,欢迎初学和进阶中的小伙伴!加QQ群:584900118

    相关文章

      网友评论

        本文标题:Java面试——2018年MyBatis常见实用面试题!

        本文链接:https://www.haomeiwen.com/subject/ndlhcqtx.html