一级缓存:
默认情况下,一级缓存是自动开启的,在SqlSession层面上,同样的sql语句再次执行的时候,SqlSession会做检测,如果查询到已经有缓存,并且缓存有效,将不再请求数据库。
二级缓存:
二级缓存默认不开启,它是在SqlSessionFactory级别的,也就类似与数据库连接池中,需要POJO实现Serializable接口进行序列化和反序列化。
需要在Mapper.xml文件中配置缓存:
<cache/>
此情形下,select语句都会产生缓存,insert,delete,update都会刷新缓存。
二级缓存配置一览:
Redis缓存配置:
配置redis缓存:
<cache type="com.ssm.xxx.RedisCache">
<property name="host" value="localhost"/>
</cache>
<!--默认缓存刷新配置-->
<select flushCache="false" userCache="true"/>
<insert flushCache="true"/>
<update flushCache="true"/>
<delete flushCache="true"/>
引用缓存配置:
<cache-ref namespace="com.ssm.xxx.xxxMapper"/>
存储过程的使用
定义存储过程:
定义POJO类:
Mapper.xml:
statementType指定是存储过程
mode指定参数的输入输出类型
jdbcType为了做好映射,指定数据库存储类型
使用游标
在存储过程中返回游标类型
jdbcType是Cursor类型
javaType是ResultSet