springboot+redis+thymeleaf实现集合的数据在前端显示

一,前言   

关于redis缓存实现在前端的一个问题:

这几天在各大博客论坛上疯狂的找thymeleaf显示从redis获取缓存显示数据,都快找遍了全网也没搜到关于这方面单独的知识,自己钻研了一两天,研究了一下redis的部分原理,由于redis存取数据有好多种,且每一种存入redis数据库里的数据格式还不一样 ,所以redis获取的数据不能直接放在modle上 ,这样会导致前端模板引擎遍历不出数据,导致前端遍历时报错 ,所以需要先将redis中获取的数据进行强转  强转为JSON格式,再将JSON强转为LIST集合的方式实现,所以我总结了一点经验,在下面分享给大家

二,项目展示

1.运行样式展示

用springboot+redis+thymeleaf+mybatisplus实现(具体代码往下看)

 (当前为毕业设计,等毕业答辩完成,将进行开源)

 2.项目需要的依赖

<!-- redis连接池-->
<dependency>
 <groupId>org.apache.commons</groupId>
 <artifactId>commons-pool2</artifactId>
</dependency>

<!-- redis依赖-->
<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>


<!--thymeleaf模板-->
<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-thymeleaf</artifactId>
 <version>2.7.3</version>
</dependency>

 <dependency>
 <groupId>org.thymeleaf</groupId>
 <artifactId>thymeleaf-spring5</artifactId>
</dependency>

<dependency>
 <groupId>org.thymeleaf.extras</groupId>
 <artifactId>thymeleaf-extras-java8time</artifactId>
</dependency>

<!--Web依赖-->
<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--mybatis-plus -->
<dependency>
 <groupId>com.baomidou</groupId>
 <artifactId>mybatis-plus-boot-starter</artifactId>
 <version>3.0.5</version>
</dependency>    
 <!--lombok-->
<dependency>
 <groupId>org.projectlombok</groupId>
 <artifactId>lombok</artifactId>
 <version>1.18.10</version>
 <scope>provided</scope>
</dependency>

3.controller代码(业务层就不展示了  直接在控制层实现) 

/**
 * @author: sqxjj
 * @Project: JavaLaity
 * @Pcakage: com.gong.school_card.pccontroller.UserController
 * @Date: 2022年09月14日 16:36
 * @Description:
 */
@Controller
public class UserController {


    //业务层注入
    @Resource  
    private StudentServicesImpl studentServices;

    @Resource  
    private StringRedisTemplate stringRedisTemplate;

    //删除学生记录
    @RequestMapping("/RecycleBin")
    public String RecycleBin(Model model) {
        /**
         * 回收站
         * 推荐使用ListOperations进行存储list集合 这样获取出来比较方便
         */

       //开始存入redis数据
       ListOperations<String, Student> listOps = redisTemplate.opsForList();

       //获取数据库的数据
        List<Student> list = studentMapper.selectList(null);

       /**将集合list存入redis 
         !!!请注意 如果在传值过程时 数据库查无数据 将不会执行存储 
         数据的方法,会强制结束进程,存储时请确保您的sql语句可以查询出数据*/
        listOps.leftPushAll("student", list);

       //获取redis中的数据
        List<String> students = stringRedisTemplate.opsForList().range("user", 0, -1);

       //获取出来的students集合不可直接放入接口中 需要进行以下操作
       //将其获取的数据进行强制类型转换成json格式
         List<Student> o = (List<Student>) JSONObject.toJSON(students); 

       //再将json格式转换成字符串  
         String jsonString = o.toString();

       //最后将其转换成list集合 
       /**student是我写的一个实体类 用来存放我接收redis的数据  注意这个实体类要跟您mapper 
          里的实体类相互对应,最好是用一个进行存储*/
         List<Student> list = JSON.parseArray(jsonString, Student.class);

       //现在可以直接放入modle中  前端会正常接收并显示了
        model.addAttribute("select", list);

       //studentlist是我的一个html文件 下面会贴出来我的前端界面与我的student实体类代码
        return "studentlist";
    }



}

student实体类 这是用来临时存放redis数据的地方

/**
 * @author: sqxjj
 * @Project: JavaLaity
 * @Pcakage: com.gong.school_card.pojo.Student
 * @Date: 2022年09月11日 14:30
 * @Description:
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Student implements Serializable {
    //学生id
    @TableId(value = "studentid", type = IdType.AUTO)
    private Integer studentid;
    //学生姓名
    private String name;
    //学生专业
    private String magor;
    //学生性别
    private Integer sex;
    //学生电话
    private String phone;

    @TableLogic//逻辑删除注解
    private Integer deleted;
    @Version //乐观锁version
    private Integer version;
    //字段填充内容
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date createTime;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;
    private String idcard;

    //多表查询
//    private Card card;
//    private Record record;

}

前端studentlist.html代码

<div class="container-fluid">
            <div class="row">
                <main role="main" class="col-md-9 ml-sm-auto col-lg-10 pt-3 px-4">
                    <div class="table-responsive">
                        <table class="table table-striped table-sm">
                            <thead>
                            <tr>
                                <th>学号</th>
                                <th>姓名</th>
                                <th>性别</th>
                                <th>电话</th>
                                <th>专业</th>
                                <th>删除时间</th>
                            </tr>
                            </thead>
                            <tbody>
                            <tr th:each="item:${select}">
                                <td th:text="${item.getStudentid()}"></td>
                                <td th:text="${item.getName()}"></td>
                                <td th:text="${item.getSex()==0?'女':'男'}"></td>
                                <td th:text="${item.getPhone()}"></td>
                                <td th:text="${item.getMagor()}"></td>
                                <td th:text="${item.getUpdateTime}"></td>
                                <td>
                                    <a class="btn btn-sm btn-danger"
                                       th:href="@{/recession/}+${item.getStudentid()}" onclick="dd()">撤销删除</a>
                                </td>
                            </tr>
                            </tbody>
                        </table>
                    </div>
                </main>
            </div>
        </div>

 控制台日志

 上述代码只能,仅可以实现简单的存取操作

控制台的查询缓存与数据库来自业务层 ,判断redis有无数据的代码没贴上 , 上面这个只是一个精简版 ,需要全部的代码请私聊 

  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Spring Boot是一个开发框架,它简化了使用Spring框架进行Java应用程序开发的过程。Redis是一个内存数据结构存储系统,它可以用作缓存数据库。@Cacheable是Spring框架的注解之一,它可以用于缓存方法的返回值。 要在Spring Boot使用Redis和@Cacheable来实现缓存,首先需要配置Redis连接。可以通过在`application.properties`或`application.yml`文件中添加以下配置来完成: ```yaml spring.redis.host=127.0.0.1 spring.redis.port=6379 ``` 接下来,在需要缓存的方法上使用`@Cacheable`注解。例如,假设我们有一个名为`getUserById`的方法,用于根据用户ID获取用户信息: ```java @Service public class UserService { @Cacheable(value = "users", key = "#id") public User getUserById(Long id) { // 从数据库或其他数据源获取用户信息 return userRepository.findById(id); } } ``` 在上述示例中,`@Cacheable`注解用于将方法的返回值缓存起来。其中,`value`属性指定了缓存的名称,`key`属性指定了缓存的键。在这个例子中,缓存的名称为"users",缓存的键为方法的参数id。 最后,需要在Spring Boot应用程序的启动类上添加`@EnableCaching`注解来启用缓存功能: ```java @SpringBootApplication @EnableCaching public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` 以上就是使用Spring BootRedis和@Cacheable实现缓存的基本步骤。通过配置Redis连接,使用`@Cacheable`注解来标记需要缓存的方法,并在启动类上添加`@EnableCaching`注解来启用缓存功能,可以轻松地实现缓存功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值