zoukankan      html  css  js  c++  java
  • mybatis

    一. mybatis的介绍

    mybatis 半自动映射框架,在查询关联对象或关联集合对象时,需要手动编写 sql 来完成,所以,称之为半自动 ORM 映射工具。

    可以编写原生态sql,可以严格执行sql的执行性能,但是过于依赖数据库,数据库移植性差,不能随意更换数据库。

    二.#{}和${}的区别是什么

    #{}是预编译处理,${}字符串替换

    处理#{}的时候会把sql中的#{}替换成?号,调用 PreparedStatement 的set 方法来赋值;

    在处理${}时,就是把${}替换成变量的值

    使用#{}可以有效的防止 SQL 注入
     
    三.Dao 接口的工作原理是什么
    Mapper 接口里的方法,是不能重载的,因为是使用 全限名+方法名 的保存和寻
    找策略。Mapper 接口的工作原理是 JDK 动态代理,Mybatis 运行时会使用 JDK
    动态代理为 Mapper 接口生成代理对象 proxy,代理对象会拦截接口方法,转而
    执行 MapperStatement 所代表的 sql,然后将 sql 执行结果返回。
     
    四.mybatis的批量插入
    insert into table (id,name) values
    <foreach collection='list' item='item' sperator=','> 
     (#{item.id},#{item.name})
    </foreach>
     
     五.mybatis插入返回主键
    <insert id=”insertname” usegeneratedkeys=”true” keyproperty=”
    id”>
    insert into names (name) values (#{name})
    </insert>
     
    六.Mybatis 的 Xml 映射文件中,不同的 Xml 映射文件,id 是否可以重复?
    不同的 Xml 映射文件,如果配置了 namespace,那么 id 可以重复;如果没有配
    置 namespace,那么 id 不能重复;
     
    七.mybatis的一级/二级缓存
    一级缓存是针对不同的sqlSession级别的
    二级缓存是针对mapper级别的,跨sqlSession,
    spring 没有事务 一级缓存会失效 ,是因为是不同的sqlSession
    有事务 是同一个sqlSession,一级缓存有效
     
     
     
     
     
  • 相关阅读:
    codeforces 820 D. Mister B and PR Shifts(思维)
    codeforces 820 C. Mister B and Boring Game(找规律)
    玲珑杯 1137
    codeforces 817 D. Imbalanced Array(单调栈+思维)
    Atcoder D
    Atcoder C
    Atcode B
    codeforces 816 E. Karen and Supermarket(树形dp)
    codeforces 816 D. Karen and Test(逆元+思维+组合数)
    codeforces 816 C. Karen and Game(模拟+思维)
  • 原文地址:https://www.cnblogs.com/javatk/p/15506954.html
Copyright © 2011-2022 走看看