Code前端首页关于Code前端联系我们

Java研发面试题集:MyBat中的缓存VS如何进行分页?搜索插件的原理是什么?

terry 2年前 (2023-09-25) 阅读数 50 #后端开发
Java研发面试题集:MyBatis 缓存VS如何进行分页?分页插件原理是什么?

6。 MyBats

1。先说说MyBatis缓存

MyBatis缓存分为一级缓存和二级缓存。一级缓存放在session中,默认就在那里,二级缓存放在那儿。默认情况下,命名空间中未启用它。要使用二级缓存属性类,您需要实现Serializable的序列化接口(它允许您存储对象的状态)。您可以在其映射文件中设置

2。Myba 它是如何进行搜索的?搜索插件的原理是什么?

  • Myba 使用 RowBounds 对象进行分页。也可以直接写sql来使用页面或者使用Myba的解析插件。
  • 拦截插件原理:实现Myba提供的接口,实现一个自定义插件,通过插件的拦截方法拦截要执行的SQL,然后重写SQL。比如:select * from Student,把sql打断,改写成这样:select t.* from (select * from Student) tlimit 0, 10

3。简单描述一下Myba tis插件的工作原理以及如何编写插件?

  • Myba只能为ParameterHandler、ResultSetHandler、StatementHandler、Executor这四个接口编写插件。Myba使用动态代理为必须监听的接口生成代理对象,以实现接口的方法拦截功能。当这四个接口实例化后,调用该方法时会在接口对象上注入一个拦截方法,具体是InvocableHandler的invoke()方法。当然,只有你指定要拦截的方法才会被拦截。
  • 实现MybaInterceptor接口并重写intercept()方法。然后对插件进行注释,指定要监听哪些接口方法。记住不要忘记配置写在配置文件中的插件。 。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门