18、SpringBoot 整合缓存技术

1、首先创建环境添加pom.xml依赖

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.0</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </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>

2、配置application.yml配置数据源和mybatis的配置

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://8.129.215.115:3306/cache?useUnicode=true&characterEncoding=utf-8&useSSL=false
    username: root
    password: root

mybatis:
  mapper-locations: classpath:mybatis/*Mapper.xml
  type-aliases-package: com.atguigu.cache.entity
  configuration:
    map-underscore-to-camel-case: true #开启驼峰命名规则


logging:
  level:
    com.atguigu.cache.mapper: debug

3、编写数据库对应的实体类

 

 4、编写实体类对应Mapper接口

@Mapper
public interface EmployeeMapper {

    @Select("select *from employee where id = #{id}")
    Employee getEmpById(Integer id);

    @Update("update employee set lastName = #{lastName},email=#{email},gender=#{gender}.d_id=@{dId}")
    Employee updateEmp(Employee employee);

    @Delete("delete from employee where id =@{id}")
    Integer deleteEmpById(Integer id);

    @Insert("insert into employee (lastName,email,gender,d_id) values (#{lastName},#{email},#{gender},#{dId})")
    Integer insertEmp(Employee employee);
}

5、扫描Mapper接口所在的包

 6、controller测试

@RestController
public class EmployeeController {
    @Autowired
    private EmployeeService employeeService;

    @GetMapping(value = "/get/{id}")
    public Employee getEmpById(@PathVariable("id") Integer id) {
        System.out.println("查询" + id+ "员工");
        Employee empId = employeeService.getEmpId(id);
        return empId;
    }

    @GetMapping(value = "/insertEmp")
    public Integer insertEmp(Employee employee) {
        Integer integer = employeeService.insertEmp(employee);
        return integer;
    }
}

 7、缓存注解的使用

8、@Cacheable注解的使用

 

 9、创建自定义key的生成策略

@Configuration
public class MyKeyGenerator {

    @Bean
    public KeyGenerator keyGenerator() {
        return new KeyGenerator() {
            @Override
            public Object generate(Object o, Method method, Object... objects) {
                return method.getName()+"["+ Arrays.asList(objects).toString()+"]";
            }
        };
    }
}

10、使用key的生成策略

 11、@CachePut的使用方法

 12、使用@CacheEvict注解的使用

 

 13、@Caching注解的使用

 

 14、@CacheConfig注解的使用

 

posted @ 2021-06-21 00:37  shunnWcs  阅读(79)  评论(0)    收藏  举报