javaredis緩存用法,Mybatis 二級緩存簡單示例

 2023-10-12 阅读 31 评论 0

摘要:簡介 簡單接收Mybatis中二級緩存的使用示例 概覽 主要部分如下: 引入Maven依賴SpringBoot配置文件配置、建庫與初始化SQL語句實體類與Mapper編寫測試 Maven依賴 完整依賴大致如下: <?xml version="1.0" encoding="UTF-8"?> <p

簡介

簡單接收Mybatis中二級緩存的使用示例

概覽

主要部分如下:

  • 引入Maven依賴
  • SpringBoot配置文件配置、建庫與初始化SQL語句
  • 實體類與Mapper編寫
  • 測試

Maven依賴

完整依賴大致如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">......<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.11</version></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.0</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13</version><scope>test</scope></dependency></dependencies>......
</project>

SpringBoot配置文件配置、建庫與初始化SQL語句

配置文件如下:

spring:datasource:url: jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&allowPublicKeyRetrieval=true&useSSL=falseusername: rootpassword: rootdriver-class-name: com.mysql.cj.jdbc.Driversql:init:schema-locations: classpath:mybatis/schema-mysql.sqldata-locations: classpath:mybatis/data-mysql.sqlmybatis:configuration:cache-enabled: truemapper-locations: classpath:mybatis/mapper/*.xmllogging.level.com.example.cache.mapper: debug

javaredis緩存用法。建庫DDL:

DROP TABLE IF EXISTS user;CREATE TABLE user
(id BIGINT(20) NOT NULL COMMENT '主鍵ID',name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',age INT(11) NULL DEFAULT NULL COMMENT '年齡',email VARCHAR(50) NULL DEFAULT NULL COMMENT '郵箱',PRIMARY KEY (id)
);

數據初始化DDL:

DELETE FROM `user`;INSERT INTO `user` (id, name, age, email) VALUES
(1, 'Jone', 18, 'test1@baomidou.com'),
(2, 'Jack', 20, 'test2@baomidou.com'),
(3, 'Tom', 28, 'test3@baomidou.com'),
(4, 'Sandy', 21, 'test4@baomidou.com'),
(5, 'Billie', 24, 'test5@baomidou.com');

實體類與Mapper編寫

User實體類:

import lombok.Data;import java.io.Serializable;@Data
public class User implements Serializable {private Long id;private String name;private Integer age;private String email;
}

UserMapper.java

import com.example.cache.entity.User;
import org.springframework.stereotype.Repository;import java.util.List;@Repository
public interface UserMapper {List<User> select();
}

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.example.cache.mapper.UserMapper"><cache/><select id="select" resultType="com.example.cache.entity.User">select * from `user`;</select>
</mapper>

測試

tomcat緩存。測試代碼如下:

import com.example.cache.entity.User;
import com.example.cache.mapper.UserMapper;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;import java.util.List;@SpringBootTest
public class UserTest {@Autowiredprivate UserMapper userMapper;@Testpublic void testSelectOneCache() {List<User> users = userMapper.select();Assertions.assertEquals(5, users.size());users.forEach(System.out::println);users = userMapper.select();Assertions.assertEquals(5, users.size());users.forEach(System.out::println);}
}

輸出如下:

2021-06-08 22:38:48.925 DEBUG 7296 --- [           main] c.e.cache.mapper.UserMapper.select       : ==>  Preparing: select * from `user`;
2021-06-08 22:38:48.950 DEBUG 7296 --- [           main] c.e.cache.mapper.UserMapper.select       : ==> Parameters: 
2021-06-08 22:38:48.979 DEBUG 7296 --- [           main] c.e.cache.mapper.UserMapper.select       : <==      Total: 5
User(id=1, name=Jone, age=18, email=test1@baomidou.com)
User(id=2, name=Jack, age=20, email=test2@baomidou.com)
User(id=3, name=Tom, age=28, email=test3@baomidou.com)
User(id=4, name=Sandy, age=21, email=test4@baomidou.com)
User(id=5, name=Billie, age=24, email=test5@baomidou.com)
2021-06-08 22:38:48.995  WARN 7296 --- [           main] o.apache.ibatis.io.SerialFilterChecker   : As you are using functionality that deserializes object streams, it is recommended to define the JEP-290 serial filter. Please refer to https://docs.oracle.com/pls/topic/lookup?ctx=javase15&id=GUID-8296D8E8-2B93-4B9A-856E-0A65AF9B8C66
2021-06-08 22:38:48.997 DEBUG 7296 --- [           main] com.example.cache.mapper.UserMapper      : Cache Hit Ratio [com.example.cache.mapper.UserMapper]: 0.5
User(id=1, name=Jone, age=18, email=test1@baomidou.com)
User(id=2, name=Jack, age=20, email=test2@baomidou.com)
User(id=3, name=Tom, age=28, email=test3@baomidou.com)
User(id=4, name=Sandy, age=21, email=test4@baomidou.com)
User(id=5, name=Billie, age=24, email=test5@baomidou.com)

可以看到第二次查詢沒有走SQL查詢,直接從Cache中取得了結果

總結

一篇簡單的Mybatis二級緩存的示例

從中可以看到,SpringBoot Mybatis是默認開啟二級緩存的,其他更多的使用,如緩存失效等,后面再探索

參考鏈接

  • junit4 maven install
  • Mybatis plus 官方中文快速入門
  • SpringBoot整合Mybatis-Plus 實戰之Mybatis-Plus的一級緩存、二級緩存詳解
  • MyBatis-Spring-Boot-Starter

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/5/135556.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息