MyBatis关于识别器和缓存的简单理解
2016-03-28 23:02
351 查看
关于多对多的情况,创建数据库时需要一个中间联系表,记录多对多的二者之间的关系,在查询甲(包括关联对应乙的内容)时,需要用到子查询,仍旧使用collection元素,和一对多的实现方式大同小异。
resultMap和resultType的区别:二者都是用于结果集类型定义,resultMap定义后需要额外具体完成映射,实现属性与列的一一对应;resultType使用时需保持属性和列名的一致(若不一样,列名应使用别名)。
关于MyBatis的识别器(discriminator):对于查询所得到的结果集,有时候我们并不能确定它的具体数据类型,这便需要用到识别器,相当于java里的switch语句,识别器一般用在结果集的映射中,子元素case即对某一列映射分情况讨论,只要匹配到一种情况,其他情况便不再比较,具体每种情况的类型可写成resultMap,然后再在外面完成具体映射,此时应对应extents属性(对应主结果集id)。每种情况类型也可以写成resultType,此时直接在子元素下用result元素完成属性与列的映射。
MyBatis缓存问题:默认情况下缓存为关闭状态,开启的步骤为1.首先在配置文件中settings元素下子元素setting中利用name(useCache)和value(true)值进行设置,然后在需要使用的mapper.xml文件中写上<cache/>标签,最后在指定的方法属性写上useCache="true"即可。
缓存是针对数据量小,不经常被修改的数据而设置的,一般分为应用级缓存(如SqlSessionFactory,也称为二级缓存)、事务级缓存(如SqlSession,也称为一级缓存)等,服务器查询缓存中的数据时,先查询一级缓存,一级缓存失效后,再查询二级缓存。
resultMap和resultType的区别:二者都是用于结果集类型定义,resultMap定义后需要额外具体完成映射,实现属性与列的一一对应;resultType使用时需保持属性和列名的一致(若不一样,列名应使用别名)。
关于MyBatis的识别器(discriminator):对于查询所得到的结果集,有时候我们并不能确定它的具体数据类型,这便需要用到识别器,相当于java里的switch语句,识别器一般用在结果集的映射中,子元素case即对某一列映射分情况讨论,只要匹配到一种情况,其他情况便不再比较,具体每种情况的类型可写成resultMap,然后再在外面完成具体映射,此时应对应extents属性(对应主结果集id)。每种情况类型也可以写成resultType,此时直接在子元素下用result元素完成属性与列的映射。
MyBatis缓存问题:默认情况下缓存为关闭状态,开启的步骤为1.首先在配置文件中settings元素下子元素setting中利用name(useCache)和value(true)值进行设置,然后在需要使用的mapper.xml文件中写上<cache/>标签,最后在指定的方法属性写上useCache="true"即可。
缓存是针对数据量小,不经常被修改的数据而设置的,一般分为应用级缓存(如SqlSessionFactory,也称为二级缓存)、事务级缓存(如SqlSession,也称为一级缓存)等,服务器查询缓存中的数据时,先查询一级缓存,一级缓存失效后,再查询二级缓存。
相关文章推荐
- 面试准备
- hdu-5637 Transform(位运算+bfs)
- linux下安装JDK和tomcat以及遇到的误区
- 【学习笔记】高性能MySQL(第三版)——第2章:MySQL基准测试
- Linux网络属性配置
- [JSTDG]JavaScript函数
- 大整数乘法-分治
- Spark-Mllib(一)数据类型
- HDOJ 2046 骨牌铺方格
- 2016春季练习——bfs简单题
- 三子棋游戏(c语言实现)
- 使用 Cocos2d-x 和粒子编辑器实现场景特效
- Oracle-04-用SQL*PLUS创建用户&新用户授权等
- Serializable和Parcelable
- iOS 富文本属性
- 复利计算器的单元测试结果
- Self-Paced Training (3) - Docker Operations
- 2016.03.28(心疼)
- android ContentProviders
- day24