激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Spring Boot設置并使用緩存的步驟

Spring Boot設置并使用緩存的步驟

2019-06-21 14:47Codenjoyes Java教程

今天小編就為大家分享一篇關于Spring Boot設置并使用緩存的步驟,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

幾個緩存注解的作用:

@Cacheable:將方法的返回結果根據key指定的鍵保存在緩存中,以后要獲取相同的數據直接從緩存中共獲取

  • cacheNames/value:指定Cache組件名稱
  • key:指定緩存時使用的key,默認使用方法參數值,可以使用#a0、#p0、#參數名等,支持SpEL表達式,root可省略
  • keyGenerator:指定key的生成器的組件id,如自定義的KeyGenerator
  • cacheManager:指定緩存管理器
  • cacheResolver:指定緩存解析器
  • condition:指定在哪種條件下緩存,如condition = “#id>=1”在參數>=1時緩存
  • unless:指定該條件為真時不緩存
  • sync:指定是否使用異步模式

@CachePut:不管緩存中是否有需要的數據,都會執行該注解標注的方法,并將結果更新到緩存,屬性見上

@CacheEvit:執行方法后,清除key指定的緩存

  • allEntries:默認為false,值為true,刪除所有緩存
  • beforeInvocation:默認為false,值為true,在方法調用之前清除緩存

@CacheConfig:定義一些通用或公共的規則,如cacheNames、keyGenerator等

可使用的SpEL表達式:

Spring Boot設置并使用緩存的步驟

使用緩存的步驟:

(1)創建一個Spring Boot應用,勾選Cache、Web、MySQL、Mybatis模塊,在主程序類上添加注解,開啟基于注解的緩存

@MapperScan(basePackages = "com.youngpain.cache.mapper")
@SpringBootApplication
@EnableCaching

(2)創建JavaBean,和數據庫中的表對應,并配置數據源

spring:
 datasource:
  url: jdbc:mysql://localhost:3306/mybatis_database
  username: root
  password: 1741248769
  driver-class-name: com.mysql.jdbc.Driver
 redis:
  host: 39.108.114.57
#開啟駝峰命名法
mybatis:
 configuration:
  map-underscore-to-camel-case: true
logging:
 level:
  com.youngpain.cache.mapper: debug

(3)創建mapper接口進行增刪改查操作

/**
 * 部門表的增刪改查操作
 */
public interface DepartmentMapper {
  @Insert("insert into department(id,depart_name,depart_build) values(#{id},#{depart_name},#{depart_build})")
  void insertDepartment(Department department);
  @Delete("delete from department where id=#{id}")
  void deleteDepartment(Integer id);
  @Update("update department set depart_name=#{departName},depart_build=#{departBuild} where id=#{id}")
  void updateDepartment(Department department);
  @Select("select * from department where id=#{id}")
  Department getDepartmentById(Integer id);
}

(4)創建service

@Service
@CacheConfig(cacheNames = {"departs"})
public class DepartmentService {
  @Autowired
  DepartmentMapper departmentMapper;
  @Cacheable(key = "#a0.id")
  public void insertDepartment(Department department) {
    departmentMapper.insertDepartment(department);
  }
  @CacheEvict(key = "#p0")
  public void deleteDepartment(Integer id) {
    departmentMapper.deleteDepartment(id);
  }
  @CachePut(key = "#a0.id")
  public Department updateDepartment(Department department) {
    departmentMapper.updateDepartment(department);
    return department;
  }
  @Cacheable(key = "#id", condition = "#p0>=1")
  public Department getDepartmentById(Integer id) {
    return departmentMapper.getDepartmentById(id);
  }
}

(5)創建controller

@Controller
public class DepartmentController {
  @Autowired
  DepartmentService departmentService;
  @GetMapping("/index")
  public String index() {
    return "index";
  }
  @GetMapping("/deleteDepart/{id}")
  public String deleteDepart(@PathVariable("id") Integer id, Model model) {
    model.addAttribute("condition", "delete");
    Department delete = departmentService.getDepartmentById(id);
    model.addAttribute("department", delete);
    departmentService.deleteDepartment(id);
    return "success";
  }
  @PostMapping("/updateDepart")
  public String updateDepart(Department department, Model model) {
    model.addAttribute("condition", "update");
    Department update = departmentService.updateDepartment(department);
    model.addAttribute("department", update);
    return "success";
  }
  @GetMapping("/getDepart/{id}")
  public String getDepartmentById(@PathVariable("id") Integer id, Model model) {
    model.addAttribute("condition", "delete");
    Department get = departmentService.getDepartmentById(id);
    model.addAttribute("department", get);
    return "success";
  }
}

(6)測試結果:

@Cacheable:第一次查詢數據,控制臺發出sql語句,之后再查詢直接從緩存中獲取
@CachePut:調用方法修改某個數據后,再次查詢該數據是從緩存中獲取的更新后的數據
@CacheEvict:調用該方法后,再次查詢某個數據需要重新發出sql語句查詢

ps:之前只是用markdown記筆記,今天第一次用markdown寫文章,寫起來好舒服啊QAQ

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對服務器之家的支持。

延伸 · 閱讀

精彩推薦
  • Java教程springboot ehcache 配置使用方法代碼詳解

    springboot ehcache 配置使用方法代碼詳解

    EhCache是一個比較成熟的Java緩存框架,Springboot對ehcache的使用非常支持,所以在Springboot中只需做些配置就可使用,且使用方式也簡易,今天給大家分享spri...

    m1719309529412912021-09-16
  • Java教程SpringBoot引入Thymeleaf的實現方法

    SpringBoot引入Thymeleaf的實現方法

    這篇文章主要介紹了SpringBoot引入Thymeleaf的實現方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下...

    Bobby6472021-07-28
  • Java教程Java之Springcloud Feign組件詳解

    Java之Springcloud Feign組件詳解

    這篇文章主要介紹了Java之Springcloud Feign組件詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下...

    深情以改10322021-11-12
  • Java教程Java list.remove( )方法注意事項

    Java list.remove( )方法注意事項

    這篇文章主要介紹了Java list.remove( )方法注意事項,非常簡單易懂,需要的朋友可以參考下...

    妖久9552021-05-25
  • Java教程淺談Java(SpringBoot)基于zookeeper的分布式鎖實現

    淺談Java(SpringBoot)基于zookeeper的分布式鎖實現

    這篇文章主要介紹了Java(SpringBoot)基于zookeeper的分布式鎖實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的...

    LJY_SUPER5742021-07-21
  • Java教程java 中鎖的性能提高辦法

    java 中鎖的性能提高辦法

    這篇文章主要介紹了java 中鎖的性能提高辦法的相關資料,需要的朋友可以參考下...

    Java之家3092020-08-13
  • Java教程JAVA中通過自定義注解進行數據驗證的方法

    JAVA中通過自定義注解進行數據驗證的方法

    java 自定義注解驗證可自己添加所需要的注解,下面這篇文章主要給大家介紹了關于JAVA中通過自定義注解進行數據驗證的相關資料,文中通過示例代碼介紹...

    Decouple6362021-05-25
  • Java教程JavaWeb 實現驗證碼功能(demo)

    JavaWeb 實現驗證碼功能(demo)

    在 WEB-APP 中一般應用于:登錄、注冊、買某票、秒殺等場景,大家都接觸過這個驗證碼操作,今天小編通過實例代碼給大家講解javaweb實現驗證碼功能,需要...

    java教程網12832020-08-05
主站蜘蛛池模板: 免费网址黄 | 亚洲综合视频一区 | 在线观看视频亚洲 | 美国一级毛片片aa久久综合 | av大全在线播放 | 久久精品亚洲精品国产欧美kt∨ | 欧美人成在线视频 | 国产午夜三级一区二区三桃花影视 | 黄色av免费电影 | 久久国产成人午夜av浪潮 | 色中色综合网 | 波多电影| 精品一区二区三区免费毛片爱 | 看毛片的网址 | 日本aaa一级片 | 黄色免费网站在线观看 | 特级毛片全部免费播放器 | 日韩午夜一区二区三区 | 日韩视频一| 日本在线观看视频网站 | 欧美日本色| 看毛片免费| 国产精品一区二区在线 | 91av资源在线 | 成人情欲视频在线看免费 | 国产精品亚洲欧美 | 日韩精品中文字幕一区二区三区 | 久久av喷吹av高潮av懂色 | 国产69精品99久久久久久宅男 | 欧美成人小视频 | 看毛片免费 | 免费观看一级黄色片 | 国产美女白浆 | 精品亚洲在线 | 欧美性生活网站 | 永久免费不卡在线观看黄网站 | 看毛片电影| 久久久久成人免费 | 亚洲网站在线 | 亚洲乱操| 色视频91 |