SQL映射文件

1.SQL映射文件(...Mapper.xml

  SQL映射文件的几个顶级元素(按照定义顺序)

    mapper-只有一个属性   namespace(命名空间)

      用于区分不同的mapper,全局唯一

      绑定dao接口,及面向接口编程

    cache-配置给定命名空间的缓存

    cache-ref-从其他命名空间应用缓存配置

    resultMap-用来描述数据库结果集和对象的对应关系

    sql-可用重用的SQL块,也可以被其他语句引用

    insert-映射插入语句

    update-映射更新语句

    delete-映射删除语句

    select-映射查询语句

2.SQL映射文件的select的返回结果类型的映射可以使用resultMap和resultType,但不能同时使用。

  resultType 直接表示返回类型包括 基础数据类型 和 复杂数据类型。

  resultMap 则是对外部resultMap定义的引用,对外部resultMap的Id,表示返回结果映射到哪一个resultMap上

  它的应用场景一般是 数据库字段信息与对象属性不一致 或者需要做复杂的联合查询以便自由控制映射结果。

3.关于MyBatis的SQL语句参数入参,对于基础数据类型的参数数据,使用@param注解实现参数入参;复杂数据类型的参数直接入参即可。

4.resultMap的association 和 collection 可以实现高级结果映射。

association属性有:

  • javaType:完整Java类名或者别名。若映射到一个JavaBean,则MyBatis通常会自行检测到其类型;

   若映射到一个HashMap,则应该明确指定JavaType,来确保所需行为。

  • property:映射数据库列的实体对象的属性。

association的子元素有:

  • id
  • result

    property:映射数据库列的实体对象的属性。

    column:数据库列名或别名

collection的属性有:

  • ofType:完整Java类名或者别名,及集合所包含的类型。
  • property:映射数据库列的实体对象的属性。  

5.MyBatis缓存

  • 一级缓存:是基于PerpetualCache(MyBatis自带)的HashMap本地缓存,作用范围为session域内,但session flush 或者 close 之后,该session中所有的cache就会被清空。
  • 二级缓存:就是global caching,它超出session 范围之外,可以被所有SqlSession 共享,开启它只需要在MyBatis的核心配置文件(mybatis-config.xml)settings中设置即可
  • 一级缓存缓存的是SQL语句,二级缓存缓存的是结果对象。
原文地址:https://www.cnblogs.com/QQW-HH/p/7617704.html