企业网站本身应该就是企业( )的一部分,莱芜哪里做网站,宣传册模板,织梦网站后台使用说明书mybatis的优缺点
优点#xff1a;
基于SQL语句编程#xff0c;不会对应用程序或者数据库的现有设计造成任何影响#xff0c;SQL写在XML里#xff0c;解除sql与程序代码的耦合#xff0c;便于统一管理#xff0c;提供XML标签#xff0c;支持编写动态SQL语句#xff0c…mybatis的优缺点
优点
基于SQL语句编程不会对应用程序或者数据库的现有设计造成任何影响SQL写在XML里解除sql与程序代码的耦合便于统一管理提供XML标签支持编写动态SQL语句并可重用补充需要手动开关连接很好的与各种数据库兼容提供映射标签支持对象与数据库的ORM字段关系映射提供对象关系映射标签支持对象关系组件维护
缺点
SQL语句的编写工作量较大对开发人员编写Sql语句的功底有一定要求
SQL语句依赖数据库导致数据库移植性差不能随意更换数据库
#{}和${}的区别是什么
#{}是预编译处理是占位符${}是字符串替换是拼接符
mybatis在处理#{}时会将sql中的#{}替换为?号调用PreparedStatement来赋值
mybatis在处理${}时就会把${}替换成变量的值调用statement来赋值
#{}的变量替换时在DBMS中变量替换后#{}对应的变量自动加上单引号
${}的变量替换时在DBMS外变量替换后${}对应的变量不会加上单引号、
使用#{}可以有效的防止sql注入提高系统安全性
简述mybatis的插件运行原理以及如何编写一个插件 mybatis的插件指的就是拦截器
mybatis只支持针对ParameterHandler ResultSetHandlerStatementHandlerExecutor这四种接口的插件mybatis使用jdk的动态代理为需要拦截的接口生成dialing对象以实现接口方法拦截功能每当执行这四种接口对象的方法时就会进入拦截方法具体就是InvovationHandler的invoke()方法拦截你指定需要拦截的方法。
编写插件
实现mybatis的interceptor接口并复写intercept()方法如何再给插件编写注解指定要拦截哪一个接口的哪些方法即可在配置文件中配置编写的插件
Intercepts({Signature(type StatementHandler.class,method query ,args {
Statement.class, ResultHandler.class},{Signature(type StatementHandler.class,method update ,args {
Statement.class, ResultHandler.class}
{Signature(type StatementHandler.class,method batch ,args {
Statement.class, ResultHandler.class})invocation.proceed()执行具体的业务逻辑