您的位置:首页 > 其它

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,也称为一级缓存)等,服务器查询缓存中的数据时,先查询一级缓存,一级缓存失效后,再查询二级缓存。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: