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映射文件
二级缓存一定要实现序列化接口
禁用二级缓存:
在statement中设置useCach=false可以禁用当前select语句的二级缓存
刷新二级缓存(清空缓存)
近期评论