在开发Web项目时,常用到的技术就是SpringBoot和Mybatis-Plus。本文将介绍如何使用SpringBoot整合Mybatis-Plus实现一个浏览数据新增功能,以及如何用Redis进行热度排名统计,最后用Vue进行数据渲染。
一、SpringBoot整合Mybatis-Plus
1. 新建SpringBoot项目,并在Pom.xml中添加Mybatis-Plus的依赖。
<dependencies>
<!-- Mybatis-Plus-->
<dependency>
<groupId>com.baomidou.mybatisplus</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.2</version>
</dependency>
<!--其他依赖请自行添加-->
</dependencies>
2. 配置Mybatis-Plus
在application.yml中配置:
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/mybatis_plus?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
username: root
password: root
jackson:
date-format: yyyy-MM-dd HH:mm:ss
mybatis-plus:
mapper-locations: classpath:mapper/*.xml
type-aliases-package: com.example.demo.entity
3. 定义实体类和Mapper
以一个User实体类为例:
@Data
public class User {
private Long id;
private String name;
private Integer age;
private String email;
private Date createTime;
private Date updateTime;
}
public interface UserMapper extends BaseMapper<User> {
}
其中,UserMapper继承了Mybatis-Plus提供的BaseMapper接口,即基本的CRUD操作都被封装好了。
4. 新建UserService
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
}
这里我们使用了Mybatis-Plus提供的ServiceImpl来实现UserService,继承了UserMapper后,ServiceImpl的默认实现就可以完成大部分的CRUD操作。
二、浏览数据新增功能
1. 在User实体内增加浏览次数的变量
@Data
public class User {
private Long id;
private String name;
private Integer age;
private String email;
private Date createTime;
private Date updateTime;
private Integer visit_count; //新增浏览次数变量
}
2. 新增访问接口
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/{id}")
public User findById(@PathVariable("id")Long id){
User user = userService.getById(id);
Integer visit_count = user.getVisit_count();
user.setVisit_count(visit_count+1);
userService.updateById(user);
return user;
}
}
代码解释:我们在访问查询接口时,通过向访问的用户浏览次数变量增加1来实现访问次数的记录。并且使用Mybatis-Plus的updateById方法来更新数据库中对应的记录。
三、Redis热度排名统计
1. 引入Redis依赖
<dependencies>
<!-- Redis -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!--其他依赖请自行添加-->
</dependencies>
2. Redis配置
spring:
redis:
host: 127.0.0.1
port: 6379
database: 0
password:
lettuce:
pool:
max-active: 400
max-wait: -1
max-idle: 20
min-idle: 5
3. 编写Redis存储的Javabean
@Data
@AllArgsConstructor
@NoArgsConstructor
public class RankingData {
private Long id;
private Integer count;
}
4. 编写更新Redis中排名数据的方法
@Service
public class RedisService {
@Autowired
private RedisTemplate redisTemplate;
// 更新Redis中的排名数据
public void updateRanking(Long id, Integer count){
redisTemplate.opsForZSet().add("ranking", new RankingData(id, count), (double)count);
}
}
代码解释:我们使用Redis的有序集合来存储排名数据,使用ZSet中的add()方法将排名数据存储到Redis中。其中,数据的分数为count,以便之后进行排序。
5. 在接口中调用修改排名数据的方法
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@Autowired
private RedisService redisService;
@GetMapping("/{id}")
public User findById(@PathVariable("id")Long id){
User user = userService.getById(id);
Integer visit_count = user.getVisit_count();
user.setVisit_count(visit_count+1);
userService.updateById(user);
// 更新Redis排名数据
redisService.updateRanking(id, user.getVisit_count());
return user;
}
}
代码解释:在用户访问接口更新完访问次数后,调用RedisService中的更新排名数据的方法。
四、使用Vue进行数据渲染
1. 在前端实现异步请求
<template>
<div>
<ul v-for="(item, index) in userList" :key="index">
<li>编号:{{item.id}} , 姓名:{{item.name}} , 浏览次数:{{item.visit_count}}</li>
</ul>
</div>
</template>
<script>
export default {
data() {
return {
//用户数据
userList: []
};
},
async mounted() { //异步请求
axios.get("/user/list").then((res) => {
this.userList = res.data; // 改变userList的值
});
},
};
</script>
代码解释:我们在Vue的mounted()钩子中使用axios向后端发送异步请求获取用户数据。
2. 启动项目,打开浏览器查看效果。
至此,一个使用SpringBoot整合Mybatis-Plus实现浏览数据新增功能、使用Redis进行热度排名、使用Vue进行数据渲染的完整项目就实现了。
总结
- Mybatis-Plus可以大大简化CRUD操作,是开发Web项目的好帮手。
- Redis的数据结构灵活,是非常好的缓存工具和快速存取的计数器功能的选择。
- Vue作为前端数据渲染的工具,非常方便易用。
希望此篇文章能够对开发者有所帮助。