mybatis 核心配置 和 二级缓存

1.一级二级缓存(优先用二级 ,一级默认开启,二级要去配置)

如何开启二级缓存,分三步:

一是在配置文件中开启,这是开启二级缓存的总开关,默认是开启状态的:

<setting name="cacheEnabled" value="true"/>

二是在Mapper文件中开启缓存,默认是不开启的,需要手动开启:

<!-- 每个Mapper文件使用一个缓存对象 -->
<cache/>

<!-- 如果是多个Mapper文件共用一个缓存对象 -->
<cache-ref />

三是针对要查询的statement使用缓存,即在<select>节点中配置如下属性:

useCache="true"

对于二级缓存有以下说明:

  • 映射语句文件中的所有 select 语句将会被缓存。
  • 映射语句文件中的所有 insert,update 和 delete 语句会刷新缓存。
  • 缓存会使用 Least Recently Used(LRU,最近最少使用的)算法来收回。
  • 根据时间表(比如 no Flush Interval,没有刷新间隔), 缓存不会以任何时间顺序 来刷新。
  • 缓存会存储列表集合或对象(无论查询方法返回什么)的 1024 个引用。
  • 缓存会被视为是 read/write(可读/可写)的缓存,意味着对象检索不是共享的,而 且可以安全地被调用者修改,而不干扰其他调用者或线程所做的潜在修改。

2..取别名  默认的是类的名字小写

 3.

 

4.resultmap映射

resultMap>元素使用案例:
1.新建数据表t_user,插入测试数据。

use mybatis
create table t_user(
            t_id int  identity(1,1) PRIMARY key, t_name varchar(50), t_age int ) insert into t_user values ('lulu','23'); insert into t_user values ('lili','25'); insert into t_user values ('jiji','18'); 

2.新建持久化类User,并定义属性。


/**
 * @author mz
 * @version V1.0
 * @Description: 用户实体类
 * @create 2017-11-01 14:13 */ public class User { private Integer id; private String name; private Integer age; //省略setter和getter方法 } 

3.创建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.itheima.mapper.UserMapper"> <resultMap id="resultMap" type="com.itheima.po.User"> <!--<id>和<result>的property属性表示User类的属性名,column属性表示数据表t_user的列名。--> <id property="id" column="t_id"/> <result property="name" column="t_name"/> <result property="age" column="t_age"/> </resultMap> <select id="findAllUser" resultMap="resultMap"> <!--<select>元素的resultMap属性表示引用上面定义的resultMap--> select * from t_user </select> </mapper> 

4.在配置文件mybatis-config中,引入UserMapper.xml,并编写测试方法

<!--配置mapper的位置-->
        <mappers>
            <mapper resource="com/itheima/mapper/CustomerMapper.xml"/> <mapper resource="com/itheima/mapper/UserMapper.xml"/> </mappers> 
@Test
    public void findAllUserTest() { //获取SqlSession SqlSession sqlSession = MybatisUtils.getSession(); //执行映射文件中定义的SQL,并返回结果 List<User> list = sqlSession.selectList("com.itheima.mapper.UserMapper.findAllUser"); for (User user : list) { System.out.println(user); } //关闭SqlSession sqlSession.close(); } 

 也可用以下方法替代

猜你喜欢

转载自www.cnblogs.com/zbf-1998/p/12692836.html