SpringBoot整合redis之环境搭建(Mybatis 缓存)

10 篇文章 0 订阅
7 篇文章 0 订阅

目录

1、添加新的方法

1.1 UserDao 接口

1.2 UserDaoMapper.xml 映射描述文件

1.3 UserService 接口

1.4  UserServiceImpl 实现类

2、添加 Mybatis自带的缓存(本地缓存)

3、对比测试

3.1 测试 findAll 方法

3.2 测试 findById 方法

 3.3 测试 save 方法

3.4 测试 update方法

3.5 测试 delete方法

4、总结


在上一章的基础上,本章将使用 Mybatis 自带的二级缓存。

上一章内容(SpringBoot整合redis之环境搭建(SpringBoot整合Mybatis、druid连接池)):https://blog.csdn.net/u010559460/article/details/109383120

1、添加新的方法

在上一章中只有一个 findAll 方法,本次将添加4个方法分别是 findById、delete、save、update 

1.1 UserDao 接口

    User findById(String id);

    void delete(String id);

    void save(User user);

    void update(User user);

1.2 UserDaoMapper.xml 映射描述文件


    <!--findById-->
    <select id="findById" parameterType="String" resultType="User">
        select id,name,age,bir from t_user where id = #{id}
    </select>

    <!--delete-->
    <delete id="delete" parameterType="String" >
        delete from t_user where id= #{id}
    </delete>

    <!--save-->
    <insert id="save" parameterType="User" >
        insert into t_user values(#{id},#{name},#{age},#{bir})
    </insert>

    <!--update-->
    <update id="update" parameterType="User">
        update t_user
        set name=#{name},age=#{age},bir=#{bir}
        where id=#{id}
    </update>

1.3 UserService 接口

   User findById(String id);

    void delete(String id);

    void save(User user);

    void update(User user);

1.4  UserServiceImpl 实现类


    public User findById(String id) {
        return userDao.findById(id);
    }

    @Override
    public void update(User user) {
        userDao.update(user);
    }

    @Override
    public void save(User user) {
        userDao.save(user);
    }

    @Override
    public void delete(String id) {
        userDao.delete(id);
    }

2、添加 Mybatis自带的缓存(本地缓存)

哪个 dao需要添加缓存,就在哪个 dao 接口对应的映射文件中添加 <cache /> 标签,例如:本次实验就在 UserDaoMapper.xml 文件中添加 <cache /> 标签,如图:

3、对比测试

3.1 测试 findAll 方法

    @Test
    public void findAll() {
        List<User> users = userService.findAll();
        System.out.println(users);

        users = userService.findAll();
        System.out.println(users);
    }

没加缓存的结果:

添加缓存后的结果:

3.2 测试 findById 方法

查询同一个id :

    @Test
    public void findById() {
        User user = userService.findById("1");
        System.out.println(user);
        userService.findById("1");
    }

没加缓存的结果:肯定是要查询2次,这里就不演示了

添加缓存后的结果:只需要查1次

查询不同id :

    @Test
    public void findById() {
        User user = userService.findById("1");
        System.out.println(user);
        userService.findById("2");
    }

即使加了缓存标签,由于参数值不一样,也是要查询两次。如图:

 3.3 测试 save 方法

    @Test
    public void save() {
        // 1. 第一次查询
        List<User> users = userService.findAll();
        System.out.println(users);

        User user = new User();
        user.setId("5");
        user.setName("a1");
        user.setAge(18);
        user.setBir(new Date());
        // 2. 添加用户
        userService.save(user);
        // 3.第二次查询
        userService.findAll();
    }

添加缓存后的结果:保存操作会清除缓存

 

3.4 测试 update方法

添加 <cache /> 后的测试

    @Test
    public void update() {
        // 1 查询 id 为1 的数据
        User user = userService.findById("1");
        System.out.println(user);

        // 2. 更新数据
        user.setName("a2");
        userService.update(user);
        // 3. 再次查询 id 为1 的数据
        userService.findById("1");
    }

更新数据会导致缓存失效

3.5 测试 delete方法

添加 <cache /> 后的测试

    @Test
    public void delete() {
        // 1. 第一次查询
        List<User> users = userService.findAll();
        System.out.println(users);

        userService.delete("5");
        // 3.第二次查询
        userService.findAll();
    }

删除数据会导致缓存失效,如图:

4、总结

引用 mybatis 官网(https://mybatis.org/mybatis-3/zh/sqlmap-xml.html

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值