11 mybatis-高级应用
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-高级应用相关推荐
- 2.4.3 Mybatis 高级查询, 复杂映射, 返回主键, 动态SQL if, set, foreach, 核心配置文件深入,plugins标签, 多表查询, 嵌套查询
目录 Mybatis 复杂映射&配置文件深入 一 Mybatis高级查询 1.1 ResutlMap属性 1.2 多条件查询(三种) 1.3 模糊查询 二 Mybatis映射文件深入 2.1 ...
- mybatis高级映射(一对一,一对多,多对多)
http://www.cnblogs.com/selene/p/4627446.html 阿赫瓦里 生命对于某些人来说,一直都是美丽的,因为这些人的一生都在为某个梦想而奋斗!!! 博客园 首页 新随笔 ...
- SpringBoot整合Mybatis(高级)
SpringBoot整合Mybatis(高级) 文章目录 SpringBoot整合Mybatis(高级) 前言 基础环境配置 增删改查 ResultMap 复杂查询 多对一 一对多 动态SQL if ...
- MyBatis-学习笔记11【11.Mybatis的缓存】
Java后端 学习路线 笔记汇总表[黑马程序员] MyBatis-学习笔记01[01.Mybatis课程介绍及环境搭建][day01] MyBatis-学习笔记02[02.Mybatis入门案例] M ...
- 【Mybatis高级映射】一对一映射、一对多映射、多对多映射
前言 当我们学习heribnate的时候,也就是SSH框架的网上商城的时候,我们就学习过它对应的高级映射,一对一映射,一对多映射,多对多映射.对于SSM的Mybatis来说,肯定也是差不多的.既然开了 ...
- mybatis高级映射多对多查询(二)
在这篇博客中,我来介绍下mybatis中的多对多查询的案例,在mybatis中,如何使用ResultMap来实现多对多的查询? 案例:一个user可以有很多role,一个role可以有很多entitl ...
- chrome 获取剪贴板内容_Chrome 开发者工具的11 个高级使用技巧
code小生 一个专注大前端领域的技术平台公众号回复Android加入安卓技术群 作者 | bitfish 译者 | 王坤祥 策划 | 蔡芳芳 来源 | 前端之巅 本文作者从开发者角度出发,介绍了几个 ...
- Mybatis 高级结果映射 ResultMap Association Collection
来源:http://www.verydemo.com/demo_c152_i1880.html MyBatis的创建基于这样一个思想:数据库并不是您想怎样就怎样的.虽然我们希望所有的数据库遵守第三范式 ...
- linux grep -11,11个高级Linux字符类和括号表达式的grep命令
你是否曾经在你需要的一种局面搜索字符串,文字或图案的文件里面呢? 如果是,那么grep工具来在这样的情况下派上用场. grep的是为其匹配一个正则表达式搜索行纯文本数据的命令行实用程序. 如果您将分词 ...
- mybatis高级查询,批量新增
review sql脚本 实体类 sql watch out mapper mapper test 之前的比较分散,自己用... sql脚本 -- auto-generated definition ...
最新文章
- SCGHR_存储过程(eSP_IDChangeStart)_政治面貌为什么不能正确更新
- rpc 调用webservice怎样传递参数_五分钟让你了解RPC原理详解
- 通过QQ或者QQ帮助别人学习Lync之一
- 数据分析真的能驱动用户快速增长吗?
- python画图程序没有图_python画图 - v0
- CF1146F: Leaf Partition(树形dp)
- gradle spring_使用Gradle的简单Spring MVC Web应用程序
- 尼尔机器人技能快捷键_《尼尔机械纪元》连招操作技巧
- oracle数据库将一列的值拼接成一行,并且各个值之间用逗号隔开
- 教师提升微能力_国培主讲风采录:信息技术再提升 微能力点巧研修
- 陕西西安职高计算机学校有哪些,2019西安中职学校名单(含公办与民办名单)...
- 全面认识痛风:症状、风险因素、发病机理及管理
- Word页码从当前页自增
- 干货 | 关于离岸银行开户(境外开户),看这一篇就够了
- kotlin用it还是this?
- 名人彩票Android客户端,名人彩票线路登录
- Object Detection in 20 years:A Survey 整理
- ubuntu8.10解决flash乱码问题!
- HTML中利用404将老域名重定向到新域名
- 新西兰移民局助中国工人维权 华人雇主提供工作