一、resultMap的constructor配置方式
      <resultMap id="" type="">
         <constructor>
             <!--主键-->
             <idArg column="id" javaType="_int"/>
             <!--其他列-->
             <arg column="" javaType=""/>
         </constructor>
     </resultMap>
二、MyBatis使用注解配置SQL
 @Select
 @Insert/@Options
 @Update
 @Delete
 如果需要使用复杂的动态SQL,建议使用XML方式;
 如果是简单的SQL,可以考虑使用注解
 三、MyBatis缓存
 对于一些我们经常查询的并且不经常改变的数据,如果每次查询都要与数据库进行交互,那么大大降低了效率,因为我们使用缓存,将一些对结果影响不大且经常查询的数据存放在内存中,从而减少与数据库的交互来提高效率,这就是缓存的优势。
 (一)、MyBatis缓存的分类
 1. 一级缓存:同一个SqlSession对象, 在参数和 SQL 完全一样的情况下, 只执行一次 SQL 语句(前提缓存没有过期)
 2. 二级缓存:Mybatis的二级缓存是指mapper映射文件。二级缓存的作用域是同一个namespace下的mapper映射文件内容,同一个SQLSessionFactory创建的多个SqlSession共享。
 (二)、一级缓存
 1、同一个SqlSession的情况  
     在参数和 SQL 完全一样的情况下,只执行一次 SQL 语句
 2、不同的SqlSession的情况
     不使用缓存
     
 3、清空缓存
     刷新缓存是清空这个SqlSession的所有缓存, 不单单是某个键
     Java代码方式:sqlSession.clearCache();
     xml方式 flushCache="true"
 4、小结:
     ①. 同一个SqlSession中, Mybatis 会把执行的方法和参数通过算法生成缓存的键值, 将键值和结果存放在一个 Map 中, 如果后续的键值一样, 则直接从 Map 中获取数据;
     ②. 不同的SqlSession之间的一级缓存是相互隔离的;
     ③. 用一个 SqlSession, 可以通过代码或XML配置在查询前清空缓存;
     ④. insert、update、delete 语句会清空缓存。
     
     
 (三)、二级缓存
 二级缓存指的是 mybatis中SqlSessionFactory对象的缓存 ,由同一个SqlSessionFactory对象 创建的SqlSession共享缓存。
1、开启
     ①、在配置文件 mybatis-conf.xml中配置,让mybatis支持二级缓存。 新版本中已经默认为true,可以不用设置。
         <!--设置-->
         <settings>
             <!--开启二级缓存-->
             <setting name="cacheEnabled" value="true"/>
         </settings>
    ②、在映射配置文件Mapper.xml中 开启支持二级缓存
         <!--开启支持二级缓存-->
         <cache/>
    ③、操作支持二级缓存,在select标签 加上useCache="true"
     
     
 MyBatis结果来源顺序: 一级缓存 -> 二级缓存(如果开启) —> 数据库









