关于我个人mybatis拦截器对于分页的看法


mybatis图片


  • 一、对于mybaits的认知
  • 二、关于mybatis的分页
  • 三、mybatis拦截器分页对项目各方面效率的影响
  • 总结

一、对于mybaits的认知

由于我还是一个学生,mybatis是我自学的,所以下面的话我说的可能会比较通俗点。
我在学mybatis之前已经学完了hibernate,hibernate其实是一个非常好用的框架,你只需要知道它面向的是对象,还有里面一些开关(比如:lazy,fetch)用的好的话,基本上都是没是没问题啊。我们都知道oracle的分页语句不像mysql一样简单,它的分页语句非常复杂,而hibernate只要简简单单配置一下就好了。
既然hibernate这么好,那我们为什么还要学mybatis呢。因为hibernate太笨重了,每执行一项功能就要产生好多sql语句,而且它的sql语句还复杂,会大大降低整个项目的运行效率,虽然hibernate也支持自己写sql语句,而这显然不是他所想要的。这是,我们就会想到mybatis,mybatis所有的sql语句都是自己写的,可别小巧它,当数据量很大的时候,一个好的sql语句的重要性,这也是为什么现在市场上很多公司都青睐mybatis的一个主要原因。

二、关于mybatis的分页

想到oracle的分页语句可能很多人都会觉的心理发慌,太长了,记不住,而且也不会用。那怎么办?
别担心,mybatis有一个拦截器,你可以自己写一个类,然后去实现Interceptor接口就可以了。原理是什么?原来我们在执行sql语句之前会产生一个Statement对象,关键sql语句是在这个对象之前产生的,也就是说我们在Statement对象产生之前拦截下来,将我们sql语句进行分页操作,这样我们只要写一个oracle的分页语句,以后就可以重复利用。而且,拦截器写的好的话是多功能的,只要不同数据库的分页语句都写好,想用那个数据库语句是要在mybatis的配置文件里面配一下就好(利用到反射)。这样以后就可以不用担心各个数据库平台的分页语句了。

三、mybatis拦截器分页对项目各方面效率的影响

你要是利用拦截器只单单做分页操作,那我觉的意义是不怎么大,你想想看你写那么大一个类不辛苦吗,那我还不如直接在sql配置文件里面写分页语句,看起来跟简洁,所以我想说的是你要把拦截器尽可能的多封装一些内容,如总记录数、总页数之类的。这样service层和controller层可以少写一些代码,我认为你甚至可以吧将jsp的链接都封装了,这样controller层和jsp也面的人员来说工作量会少了非常多(你想想每个需要jsp的重复有繁琐的分页代码是多么可怕的一件事)。
但是有一个地方你必须注意到,如果你用到mybatis二级缓存,你就不该将分页链接进行封装,不让缓存会出现异常,它无法缓存分页链接。所以这时候你最好的方法是不要利用到拦截器分页,直接用sql语句分页,而且其实这样也更高效。我说了,拦截器也会用到反射,反射这个东西要适当用,多用还降低项目的运行效率的。

总结

最后,我想总结一下,虽然分页语句比较难学(比如oracle),都是最好还是去学一些,拦截器这个东西,适当用,不能以为的说我要分页,我就要用到拦截器,我们应该考虑的是拦截器对项目全程的影响。利,则用;差,则弃。


smirk小泽
2017 年 02月16日

猜你喜欢

转载自blog.csdn.net/qq_36890499/article/details/55272239
今日推荐