栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

springboot结合mysql和redis数据库进行数据读取和缓存的demo

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

springboot结合mysql和redis数据库进行数据读取和缓存的demo

springboot结合mysql和redis数据库进行数据读取和缓存的demo

结尾有项目代码的gitee下载路径。

依赖的导入,本案例需要的依赖在下方

        
            org.mybatis
            mybatis
            3.4.4
        
        
            mysql
            mysql-connector-java
            8.0.11
        

        
            org.mybatis.spring.boot
            mybatis-spring-boot-starter
            1.1.1
        
                
            org.springframework.boot
            spring-boot-starter-cache
        
        
            org.springframework.boot
            spring-boot-starter-data-redis
        

数据表sql


SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for users
-- ----------------------------
DROp TABLE IF EXISTS `users`;
CREATE TABLE `users` (
  `user` varchar(255) DEFAULT NULL,
  `password` varchar(255) DEFAULT NULL,
  `jurisdiction` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

-- ----------------------------
-- Records of users
-- ----------------------------
INSERT INTO `users` VALUES ('admin', '1234', 'admin11');
INSERT INTO `users` VALUES ('hhh', 'hhh', 'hhh');
INSERT INTO `users` VALUES ('admins', 'hhhj', 'hhhjjj');

application.properties文件需要添加的内容

spring.datasource.url=jdbc:mysql://localhost:3306/cheshi?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.schema= classpath:sql/cheshi.sql
#spring.datasource.initialization-mode=always



spring.redis.host= localhost
spring.redis.port= 6379
spring.redis.password=123456
spring.cache.type=redis
spring.redis.timeout=10000
mybatis.mapper-locations= classpath:mybatis/*.xml

mybatis文件代码




    
        select
        `user`,`password`,`jurisdiction`
        from users
    
    
		insert into users
		(
            `user`,`password`,`jurisdiction`
		)
		values
		(
			#{user},#{password},#{jurisdiction}
		)
	
    
		delete from users where user = #{user}
	
    
        update users set password = #{password} where user = #{user}
    

dao文件夹编写mapper映射代码(文件名UserDao)

@Mapper
public interface UserDao {
    userDo get(String user);
    List list();
    int save(userDo GoodsContent);
    void update(@Param("user") String user, @Param("password") String password);
    int remove(String user);
}

domain文件夹代码(文件名userDo)

public class userDo implements Serializable {
    private String user;
    private String password;
    private String jurisdiction;

    public void setUser(String user) {
        this.user = user;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public void setJurisdiction(String jurisdiction) {
        this.jurisdiction = jurisdiction;
    }

    public String getUser() {
        return user;
    }

    public String getPassword() {
        return password;
    }

    public String getJurisdiction() {
        return jurisdiction;
    }
}

服务层代码

@Service
public class userService {
    @Autowired
    private UserDao UserDao;

//    @Cacheable( value="userDo",unless = "#result==null",key="#hhh")
  @Cacheable(cacheNames = "userDo", unless = "#result==null")
  public userDo get(String user){
      System.out.println("get");
      if(UserDao.get(user)!=null){
          return UserDao.get(user);
      }
      return null;
  }
  @CacheEvict(cacheNames = "userDo", beforeInvocation=true)
  public  int remove(String user){
      System.out.println("remove");
     return UserDao.remove(user);
  }

    @Cacheable(cacheNames = "userDo", key = "#GoodsContent.user")
//    @Cacheable( value="userDo",unless = "#result==null",key="#GoodsContent.user")
  public userDo save(userDo GoodsContent){
      UserDao.save(GoodsContent);
      System.out.println("save");
      return UserDao.get(GoodsContent.getUser());
  }

    @CachePut(cacheNames = "userDo", key = "#user")
    public userDo update(@Param("user") String user, @Param("password") String password){
        UserDao.update(user,password);
        System.out.println("update");
        return UserDao.get(user);
    }
}

控制层代码

@RestController
public class Controller {
    @Autowired
    private com.hsq.hdfs.server.userService userService;

    @GetMapping("/get")
    public userDo get(@RequestParam("user")String user) {
     return userService.get(user);
    }

    @PostMapping("/del")
    public int del(@RequestParam("user")String user) {
        return userService.remove(user);
    }

    @PostMapping("/edit")
    public userDo edit(@RequestBody userDo userDo){
        return userService.save(userDo);
    }

    @PostMapping("/up")
    public userDo up(@RequestParam("user")String user,@RequestParam("password")String password) {
        return userService.update(user,password);
    }
}

运行结果

代码补充说明,服务层函数内的print输出目的是让用户明白缓存的作用,当redis内读取到数据时,函数是不会运行的,也就不会有print的打印,同时redis数据的更新使用的是@CachePut。缓存的数据为函数的返回结果。具体用法可以自行百度学习。本文只是提供一个小小的demo,为大家提供一个代码案例,方便大家的学习。

项目gitee下载路径:https://gitee.com/hsq111/redisdemo.git

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/858978.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号