当前位置: 首页 > 最新文章 > 正文

重学Mybatis(四)-------拦截器 (含面试题)

博主将会针对Java面试题写一组文章,包括J2ee,SQL,主流Web框架,中间件等面试过程中面试官经常问的问题,欢迎大家关注。一起学习,一起成长,文章底部有面试题。Struts2里的拦截器是动态拦截Action调用的对象。它提供了一种机制可以使开发者可以定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行,同时也提供了一种可以提取action中可重用部分的方式。m

admin

博主将会针对Java面试题写一组文章,包括J2ee,SQL,主流Web框架,中间件等面试过程中面试官经常问的问题,欢迎大家关注。一起学习,一起成长,文章底部有面试题。Struts2里的拦截器是动态拦截Action调用的对象。它提供了一种机制可以使开发者可以定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行,同时也提供了一种可以提取action中可重用部分的方式。mybatis拦截器:Mybatis给我们提供了相对比较完善的拦截器功能。实现方式也比较简单,定义一个类实现Interceptor 接口即可。MyBatis 允许你在已映射语句执行过程中的某一点进行拦截调用。

博主将会针对Java面试题写一组文章,包括J2ee,SQL,主流Web框架,中间件等面试过程中面试官经常问的问题,欢迎大家关注。一起学习,一起成长,文章底部有面试题。

重学Mybatis(四)-------拦截器 (含面试题)

拦截器简介:

熟悉Struts,Spring-MVC童鞋应该知道,他们提供了拦截器,用于拦截恶意请求,保护系统安全。Struts2里的拦截器是动态拦截Action调用的对象。它提供了一种机制可以使开发者可以定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行,同时也提供了一种可以提取action中可重用部分的方式。

重学Mybatis(四)-------拦截器 (含面试题)

mybatis拦截器:

Mybatis给我们提供了相对比较完善的拦截器功能(官方称之为插件plugins)。那么要怎么实现这个plugins呢?实现方式也比较简单,定义一个类实现Interceptor 接口即可。

我们可以来看一下官方提供的连接器demo。

@Intercepts({@Signature( type= Executor.class, method = "update", args = {MappedStatement.class,Object.class})})public class ExamplePlugin implements Interceptor { public Object intercept(Invocation invocation) throws Throwable { return invocation.proceed(); }}

注解中method=update,表示执行更新相关操作(insert ,update 语句)时会触发执行进入拦截器intercept方法;invocation.proceed()表示连接器处理已经通过,可进入下一阶段。

MyBatis 允许你在已映射语句执行过程中的某一点进行拦截调用。默认情况下,MyBatis 允许使用插件来拦截的方法调用包括以下四种类型:

Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed)ParameterHandler (getParameterObject, setParameters)ResultSetHandler (handleResultSets, handleOutputParameters)StatementHandler (prepare, parameterize, batch, update, query)

mybatis拦截器的应用:

在楼主几年开发工作中,记得也就用到以下三种场景:

页面查询分页;

打印查询语句的 sql 日志;

防止跨站脚本 (XSS);

面试拓展

1.讲讲你用过几种mybatis的分页方式,谈谈你的理解和利弊。

2.mybatis 如何防止SQL注入。

重学Mybatis(四)-------拦截器 (含面试题)

-------------

写的不好,如果大家有更高的见解欢迎评论。


上一篇: html打开新标签(win10浏览器如何在新标签打开) 下一篇:java自定义标识符规则(java中定义属性)
返回顶部