mybatis

作者: JackSpeed | 来源:发表于2021-11-18 19:58 被阅读0次

    mybatis的优缺点

    优点:

    1. 基于SQL语句编程,比较灵活,不会对程序代码和数据库的现有设计造成影响;SQL语句与业务代码分离便于统一管理SQL,也接触了与业务代码的耦合。
    2. 与JDBC相比,减少了代码量,降低了冗余代码,也避免了手动打开和关闭SQL连接
    3. 提供了很多的第三方插件(分页、逆向工程)
    4. 提供了XML标签,支持动态SQL
    5. 提供了映射标签,支持对象与数据库的ORM字段关系映射

    缺点:

    1. SQL语句依赖于数据库,导致可移植性差,不能随便切换数据库源,比如mysql和Oracle之间的切换
    2. SQL语句变量工作量较大,当字段比较多、关联表比较多时,对SQL编写能力有一定要求

    $和#的区别

    带#的变量,入参会经过prepareStatement预编译,经过编译之后再把入参拼接到SQL中;而带$符的变量的入参是直接拼接在SQL中,不会加''。直接拼接的这种方式可能会出现SQL注入风险,也就是入参作为一段SQL,然后拼接到原有的SQL语句后面,影响数据和系统安全。

    mybatis的插件运行原理,如何编写一个插件

    mybatis只支持ParameterHandler、ResultSetHandler、StatementHandler、Executor这四种接口的插件,Mybatis使用JDK的动态代理,为需要拦截的接口生成代理对象以实现方法拦截功能,每当执行这四种接口对象的方法时,就会进入拦截方法,具体就是InvocationHandler和invoke方法,可以指定需要看得的方法。

    插件具体操作实现:编写类实现ibatis的Interceptor接口,在类上增加注解@Interceptors({@Signature(type="StatementHandler.class",method="query",args={Statement.class,ResultSetHandler.class})})和@Component,实现接口的interceptor方法,可以这里对执行的方法进行拦截

    相关文章

      网友评论

          本文标题:mybatis

          本文链接:https://www.haomeiwen.com/subject/oungultx.html