zoukankan      html  css  js  c++  java
  • Mybatis 问题总结

    1. Mybatis的一级、二级缓存?
      • 本地缓存,其作用于是在session中,当session进行close、flush就会清除缓存,默认打开一级缓存。
      • 二级缓存和一级缓存机制相同,不同的是二级缓存作用于为mapper,默认不开启,开启则需要实现序列化,在配置文件中进行cache
      • 什么时候使用二级缓存?
        • 如果多个namespace 中有针对于同一个表的操作,比如Blog 表,如果在一个namespace 中刷新了缓存,另一个namespace 中没有刷新,就会出现读到脏数据的情况。所以,推荐在一个Mapper 里面只操作单表的情况使用。
    2. 多对一,一对多?
      • 多对一
        • 多方添加一方的实体类
        • property:实体类变量名称
        • JavaType:实体类返回值
        • column:多方的外键
        • select:调用多方的根据部门编号查询
      • 一对多
        • 一方添加多方的集合
        • property:集合的变量名称
        • ofType:集合的泛型实体
        • JavaType:com.util.List
        • select:调用多方的根据外键查询
    3. Mybatis中的 ${ } 和 #{ }的区别?
      • 举例:select * from user where name = "root";
      • 解析前:select * from user where name = #{name};
      • 解析后:select * from user where name = ?;
      • 解析前:select * from user where name = ${name};
      • 解析后:select * from user where name = "root";
        • 能防止sql注入,$不能防止sql注入。所以推荐使用#

    4. 什么是Mybatis?
      • 半orm的框架,内部封装了JDBC,使用的时候只需要关注SQL,不需要关注加载驱动,创建连接等繁杂的过程等。
    5. mybatis的优缺点?
      • 优:基于sql编程,相当灵活,能够很好的与spring集成在一起,可以很好的的与个个数据库兼容。
      • 缺:需要编写大量的sql,字段多关联表多时,需要开发人员对sql有一定的功底。
    6. MyBatis 框架适用场合?
      • MyBatis 框架专注于SQL,适用于对性能要求高、需要变化比较多的项目,是一个灵活的持久层解决方案。
    7. MyBatis 与 Hibernate 有哪些不同?
      • MyBatis:它不是一个完整的orm框架,需要我们自己手写SQL。
      • Hibernate:它是一个完成的orm持久层框架,不需要写SQL,直接使用实体类加上 And Or Find自动生成SQL。
    8. 当实体类中的属性名和表中的字段名不一样 ,怎么办?
      • 使用别名,order_id or orderID
      • 使用Result进行映射,colum是数据库字段,property是实体类字段。
    9. 模糊查询 like 语句该怎么写?
    // 第 1 种:在 Java 代码中添加 sql 通配符。
    string wildcardname = “%smi%”;
    list<name> names = mapper.selectlike(wildcardname);
    
    <select id=”selectlike”>
    	select * from foo where bar like #{value}
    </select>
    
    
    // 在 sql 语句中拼接通配符,会引起 sql 注入
    String wildcardname = “smi”;
    list<name> names = mapper.selectlike(wildcardname);
    
    <select id=”selectlike”>
    	select * from foo where bar like "%"#{value}"%"
    </select>
    
    1. 通常一个 Xml 映射文件,都会写一个 Dao 接口与之对应,请问,这个 Dao 接口的工作原理是什么?Dao 接口里的方法,参数不同时,方法能重载吗?
      • Dao接口即Mapper接口。
      • Mapper 接口里的方法,是不能重载的,因为是使用 全限名+方法名 的保存和寻找策略。
    2. 如何获取自动生成的(主)键值?
      • 在添加语句后面跟加上
      • keyColumn="id" 返回增长的列
      • usegeneratedkeys:开启自增
      • keyproperty:需要自增的列
        • usegeneratedkeys=”true” keyproperty=”id”
    3. 在 mapper 中如何传递多个参数?

    4. Mybatis 动态 sql 有什么用?执行原理?有哪些动态 sql?
      • Mybatis 动态SQL可以在xml映射文件内,以标签的形式运行。
      • 执行原理:根据表达式的值,完成逻辑、判断 动态的拼接SQL。
      • Mybatis 提供 了 9 种动 态 sql 标签 :trim | where | set | foreach | if | choose| when | otherwise | bind。
    5. Mybatis 的 Xml 映射文件中,不同的 Xml 映射文件,id 是否可以重复?
      • 不同的 Xml 映射文件,如果配置了 namespace,那么 id 可以重复;如果没有配置 namespace,那么 id 不能重复;
    6. Mybatis 是否支持延迟加载?如果支持,它的实现原理是什么?
      • Mybatis 仅支持 association 关联对象和 collection 关联集合对象的延迟加载
    7. 什么是 MyBatis 的接口绑定?有哪些实现方式?
      • 接口绑定就是把接口和SQL语句绑定到一起。
      • 接口使用@Parma注解标注参数,xml中的namespace对应接口的全路径。
    8. 使用 MyBatis 的 mapper 接口调用时有哪些要求?

    9. 简述 Mybatis 的插件运行原理,以及如何编写一个插件。
    10. MyBatis @Select、@Update注解使用

      https://www.cnblogs.com/Twittery/p/14577306.html

  • 相关阅读:
    FastReport.Net使用:[13]如何使用表达式
    FastReport.Net使用:[11]公共对象属性介绍
    FastReport.Net使用:[10]报表栏目说明
    FastReport.Net使用:[9]多栏报表(多列报表)
    FastReport.Net使用:[8]交叉表一
    FastReport.Net使用:[7]打印空白行
    FastReport.Net使用:[6]HTML标签使用
    测试,测试开发,QA,QM,QC--------- 测试之路勿跑偏
    java 接口自动化测试之数据请求的简单封装
    java HttpClient POST请求
  • 原文地址:https://www.cnblogs.com/Twittery/p/14713123.html
Copyright © 2011-2022 走看看