它将采用默认的行为进行缓存:
- 映射文件中所有的select语句将被缓存
- 映射文件中所有的insert、update和delete语句将刷新缓存
- 缓存将使用LRU(Least Recently Used)最近最少使用策略算法来回收
- 刷新间隔(no Flush Interval,没有刷新间隔),缓存不会以任何时间顺序来刷新
- 缓存会存储列表集合和对象(无论查询方法返回什么)的1024个引用
- 缓存会被视为read/write(可读/可写)的缓存,意味着对象检索不是共享的,而且可以安全的被调用者修改,而不干扰其他调用者或者线程所做的潜在修改
所有这些属性都可以通过缓存元素的属性来修改,比如:
<cache
eviction="FIFO"
flushInterval="10800000" size="512"
readOnly="true"
/>
一、实体类
import
java.io.Serializable;
import
java.util.Date;
public
class
User
implements
Serializable {
private
static
final
long
serialVersionUID = -8081225022334946487L;
private
int
id;
private
String name;
private
Date birthday;
private
double
salary;
public
int
getId() {
return
id;
}
public
void
setId(
int
id) {
this
.id = id;
}
public
String getName() {
return
name;
}
public
void
setName(String name) {
this
.name = name;
}
public
Date getBirthday() {
return
birthday;
}
public
void
setBirthday(Date birthday) {
this
.birthday = birthday;
}
public
double
getSalary() {
return
salary;
}
public
void
setSalary(
double
salary) {
this
.salary = salary;
}
@Override
public
String toString() {
return
"User [id="
+ id +
", name="
+ name +
", birthday="
+ birthday
+
", salary="
+ salary +
"]"
;
}
}
同样要实现Serializable接口。
二、userMapper.xml
<?xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"
>
<mapper
namespace
=
"com.mapper.UserMapper"
>
<cache/>
<resultMap
type
=
"User"
id
=
"userResult"
>
<result
column
=
"user_id"
property
=
"id"
/>
<result
column
=
"user_name"
property
=
"name"
/>
<result
column
=
"user_birthday"
property
=
"birthday"
/>
<result
column
=
"user_salary"
property
=
"salary"
/>
</resultMap>
<!-- 取得插入数据后的 id -->
- <insert id="save" keyColumn="user_id" keyProperty="id" useGeneratedKeys="true">
insert into s_user(user_name,user_birthday,user_salary)
values(#{name},#{birthday},#{salary})
</insert>
<update
id
=
"update"
>
update s_user
set
user_name
= #{name},
user_birthday
= #{birthday},
user_salary
= #{salary}
where
user_id
= #{id}
</update>
<delete
id
=
"delete"
>
delete from s_user
where
user_id
= #{id}
</delete>
<select
id
=
"findById"
resultMap
=
"userResult"
>
select *
from s_user
where
user_id
= #{id}
</select>
<select
id
=
"findAll"
resultMap
=
"userResult"
>
select *
from s_user
</select>
</mapper>
同样加上<cache/>就可以了。
有些select不想被缓存时,可以添加select的属性useCache=“false”;有些insert、update和delete不想让他刷新缓存时,添加属性flushCache=”false ”。