1 TypeHandler使用

MyBatis会用类型处理器将获取的值以合适的方式转换成 Java 类型。Mybatis默认为我们实现了许多TypeHandler, 当我们没有配置指定TypeHandler时,Mybatis会根据参数或者返回结果的不同,默认为我们选择合适的TypeHandler处理。

mybaits内置了很多TypeHandler,如下:

自定义一个TypeHandler需要继承BaseTypeHandler类,并在配置文件中注册和使用

<typeHandlers>

<typeHandler handler="自定义TypeHandler"

javaType="XXX" jdbcType="VARCHAR"/>

</typeHandlers>

<resultMap>

<result property="id" column="id"/>

<result property="date" column="date" typeHandler="自定义TypeHandler"/>

</resultMap>

2 一对多映射

collection聚合:该方式效率较高,只需要执行一次sql

collection select嵌套:该方式效率较低,会执行多次sql查询。对象之间的sql配置是分开的,可重用性较好。

3 缓存

Mybatis对缓存提供支持,但是在没有配置的默认情况下,它只开启一级缓存,一级缓存只是相对于同一个SqlSession而言,二级缓存是mapper级别的缓存,如下图:

一级缓存

(1)  MyBatis在开启一个数据库会话时,会 创建一个新的SqlSession对象,SqlSession对象中会有一个新的Executor对象。Executor对象中持有一个新的PerpetualCache对象;当会话结束时,SqlSession对象及其内部的Executor对象还有PerpetualCache对象也一并释放掉。不同的sqlSession之间的缓存数据区域(HashMap)是互相不影响的

(2) 同一个 SqlSession 对象, 在参数和 SQL 完全一样的情况,多次查询时会使用缓存。

二级缓存

(1) 二级缓存是基于 mapper文件的namespace的,也就是说多个sqlSession可以共享一个mapper中的二级缓存区域,是Application级别的缓存。

(2) 二级缓存有全局和Mapper中的两种开关配置,默认是关闭的。

(3) 二级缓存要求返回的模型类POJO是序列化的。

二级缓存的流程如下:

转载于:https://www.cnblogs.com/lizhuxin/p/10745286.html

11 mybatis-高级应用相关推荐

  1. 2.4.3 Mybatis 高级查询, 复杂映射, 返回主键, 动态SQL if, set, foreach, 核心配置文件深入,plugins标签, 多表查询, 嵌套查询

    目录 Mybatis 复杂映射&配置文件深入 一 Mybatis高级查询 1.1 ResutlMap属性 1.2 多条件查询(三种) 1.3 模糊查询 二 Mybatis映射文件深入 2.1 ...

  2. mybatis高级映射(一对一,一对多,多对多)

    http://www.cnblogs.com/selene/p/4627446.html 阿赫瓦里 生命对于某些人来说,一直都是美丽的,因为这些人的一生都在为某个梦想而奋斗!!! 博客园 首页 新随笔 ...

  3. SpringBoot整合Mybatis(高级)

    SpringBoot整合Mybatis(高级) 文章目录 SpringBoot整合Mybatis(高级) 前言 基础环境配置 增删改查 ResultMap 复杂查询 多对一 一对多 动态SQL if ...

  4. MyBatis-学习笔记11【11.Mybatis的缓存】

    Java后端 学习路线 笔记汇总表[黑马程序员] MyBatis-学习笔记01[01.Mybatis课程介绍及环境搭建][day01] MyBatis-学习笔记02[02.Mybatis入门案例] M ...

  5. 【Mybatis高级映射】一对一映射、一对多映射、多对多映射

    前言 当我们学习heribnate的时候,也就是SSH框架的网上商城的时候,我们就学习过它对应的高级映射,一对一映射,一对多映射,多对多映射.对于SSM的Mybatis来说,肯定也是差不多的.既然开了 ...

  6. mybatis高级映射多对多查询(二)

    在这篇博客中,我来介绍下mybatis中的多对多查询的案例,在mybatis中,如何使用ResultMap来实现多对多的查询? 案例:一个user可以有很多role,一个role可以有很多entitl ...

  7. chrome 获取剪贴板内容_Chrome 开发者工具的11 个高级使用技巧

    code小生 一个专注大前端领域的技术平台公众号回复Android加入安卓技术群 作者 | bitfish 译者 | 王坤祥 策划 | 蔡芳芳 来源 | 前端之巅 本文作者从开发者角度出发,介绍了几个 ...

  8. Mybatis 高级结果映射 ResultMap Association Collection

    来源:http://www.verydemo.com/demo_c152_i1880.html MyBatis的创建基于这样一个思想:数据库并不是您想怎样就怎样的.虽然我们希望所有的数据库遵守第三范式 ...

  9. linux grep -11,11个高级Linux字符类和括号表达式的grep命令

    你是否曾经在你需要的一种局面搜索字符串,文字或图案的文件里面呢? 如果是,那么grep工具来在这样的情况下派上用场. grep的是为其匹配一个正则表达式搜索行纯文本数据的命令行实用程序. 如果您将分词 ...

  10. mybatis高级查询,批量新增

    review sql脚本 实体类 sql watch out mapper mapper test 之前的比较分散,自己用... sql脚本 -- auto-generated definition ...

最新文章

  1. SCGHR_存储过程(eSP_IDChangeStart)_政治面貌为什么不能正确更新
  2. rpc 调用webservice怎样传递参数_五分钟让你了解RPC原理详解
  3. 通过QQ或者QQ帮助别人学习Lync之一
  4. 数据分析真的能驱动用户快速增长吗?
  5. python画图程序没有图_python画图 - v0
  6. CF1146F: Leaf Partition(树形dp)
  7. gradle spring_使用Gradle的简单Spring MVC Web应用程序
  8. 尼尔机器人技能快捷键_《尼尔机械纪元》连招操作技巧
  9. oracle数据库将一列的值拼接成一行,并且各个值之间用逗号隔开
  10. 教师提升微能力_国培主讲风采录:信息技术再提升 微能力点巧研修
  11. 陕西西安职高计算机学校有哪些,2019西安中职学校名单(含公办与民办名单)...
  12. 全面认识痛风:症状、风险因素、发病机理及管理
  13. Word页码从当前页自增
  14. 干货 | 关于离岸银行开户(境外开户),看这一篇就够了
  15. kotlin用it还是this?
  16. 名人彩票Android客户端,名人彩票线路登录
  17. Object Detection in 20 years:A Survey 整理
  18. ubuntu8.10解决flash乱码问题!
  19. HTML中利用404将老域名重定向到新域名
  20. 新西兰移民局助中国工人维权 华人雇主提供工作

热门文章

  1. 基于XML的IOC案例
  2. Filter:过滤器
  3. servlet请求与响应的练习实例
  4. javascript (function(){})()
  5. Python 库安装方法:pip安装tar.gz压缩包,pip安装whl文件
  6. cf552 G Minimum Possible LCMn个数,求最小得一对lcm
  7. manacher马拉车算法
  8. 第3周实践项目4 -顺序表的应用 删除顺序表中元素为x的值
  9. 第2周项目2程序的多文件组织
  10. 整数划分问题(递归法)