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();
    }

 

 也可用以下方法替代

 

posted @ 2020-04-13 17:47  张图南  阅读(792)  评论(0)    收藏  举报