11-21唐兆文

一对一关系:association

property:映射实体类的属性

javatype:属性对应的java类型

一对多:collection

oftype:指定集合元素的数据类型

使用assocation延迟加载

<association property="user" javatype="user"

select="com.it.mybatis.dao.IUserDao.finById"

cloumn="uid">

select:延时加载时执行的查询

column:填写我们要传给select映射的参数

开启mybatis延迟加载

mybatis 3.4.1之后aggressiveLazyLoading默认值为false所以可以不设置

mybatis缓存:

一级缓存:

一级缓存时SqlSession范围的缓存,当调用SqlSession的修改,添加,删除,commit(),close()等方法时,就会清空一级缓存。防止后续发生脏读(查询到期的数据)

清空缓存:session.clearCache();

二级缓存:

二级缓存时mapper映射级别的缓存,多个sqlsession去操作 同一个mapper映射的sql语句,多个sqlsession可以公用二级缓存,二级缓存时跨sqlsession的。

相同namespace的mapper查询的数据缓存在同一个区域,如果使用mapper代理方法每个mapper的namespace都不同,可以理解为二级缓存区域是根据mapper划分。

Sqlsession执行insert,update,delete等操作commit提交后会清空缓存区域,防止脏读

在sqlmapconfig.xml文件开启缓存第一步:

cacheEnabled的取值默认为true,所以这一步shenglue不配置

第二步:配置相关的mapper映射文件

标签表示当前这个mapper映射使用二级缓存,区分的标准就看mapper的namespace值

二级缓存一定要实现序列化接口

禁用二级缓存:

在statement中设置useCach=false可以禁用当前select语句的二级缓存

标签

评论


© 2021 成都云创动力科技有限公司 蜀ICP备20006351号-1