1. 程式人生 > >springboot+Cache

springboot+Cache

一:快取

1.匯入需要依賴

core:Cache

web:web

Sql:mysql+Mybatis

2.搭建基本環境

建立資料庫
Student(學生表)
   id        int          主鍵:自增
   name      varchar(20)  姓名
   gender    bit          性別(true:女   false:男)
   grade_id  int          外來鍵(年級編號)

Grade(年級表)
id        int          主鍵:自增
name      varchar(20)  年級名次

3.建立javaBean(POJO)

@Data
public class Student {
    private Integer id;
    private String name;
    private Boolean gender;
    private Integer gradeId;
}


@Data
public class Grade {
    private Integer id;
    private String name;
}

4.整和mybatis

4.1  application.properties

#dataSource

#spring.datasource.driver-class-name=com.mysql.jdbc.Driver

spring.datasource.url=jdbc:mysql://localhost:3306/mybatis

spring.datasource.username=root

spring.datasource.password=root


#mybatis配置(開啟駝峰命名)
mybatis.configuration.map-underscore-to-camel-case=true

4.2 mapper層編碼

@Mapper
public interface StudentMapper {
    /**
     * 根據id獲取到物件
     * @param id    學生編號
     * @return      學生物件
     */
    @Select("select * from student where id=#{id}")
    Student getStudentById(Integer id);
}

5.編碼controller

@RestController
public class StudentContorller {

    @Autowired
    private StudentMapper studentMapper;
    @RequestMapping("/getById/{stuid}")
    public Student getById(@PathVariable("stuid") int stuid){

        return studentMapper.getStudentById(stuid);
    }
}

6.快取

6.1快取所需要的註解--開啟應用快取

/*
        將資料放入到快取中
            cacheNames/value:指定快取元件的名字
            key:快取資料使用的key,預設引數是方法的返回值
                #root.methodName        被呼叫的方法名
                #root.method.name       當前被呼叫的方法
                #root.target            被呼叫的目標物件
                #root.targetClass       被大哦有那個的目標物件類
                #root.args[0]           被呼叫的方法的引數列表
             keyGenerator:key的生成器,預設是主鍵id(和key是二選一)
             cacheManager:指定快取管理器(比如redis)
     */
    @Cacheable(cacheNames="stu",key = "#root.args[0]")
    @Override
    public Student getStudentById(Integer stuid) {
        return studentMapper.getStudentById(stuid);
    }

6.2修改快取中資料

 @CachePut

6.3清楚快取

@CacheEvict