面试题之数据库
这篇面试题集锦,不仅仅是数据库,还包括了数据库相关的内容,比如mybatis等。
1.Mybatis常见面试题
1.简述Mybatis的插件运行原理,以及如何编写一个插件?
Mybatis仅可以编写针对ParameterHandler、ResultSetHandler、StatementHandler、Executor这4种接口的插件,Mybatis使用JDK的动态代理,为需要拦截的接口生成代理对象以实现接口方法拦截功能,每当执行这4种接口对象的方法时,就会进入拦截方法,具体就是InvocationHandler的invoke()方法,当然,只会拦截那些你指定需要拦截的方法。
实现Mybatis的Interceptor接口并复写intercept()方法,然后在给插件编写注解,指定要拦截哪一个接口的哪些方法即可,记住,别忘了在配置文件中配置你编写的插件。
2.#{}和${}的区别是什么?
- #{}解析传递进来的参数数据,#{}是预编译处理,使用#{}可以有效的防止SQL注入,提高系统安全性。
- ${}对传递进来的参数原样拼接在SQL中,${}是字符串替换