实现代码:
package com.example.blog.controller;
import com.example.blog.entity.Result;
import com.example.blog.entity.ResultGenerator;
import com.example.blog.entity.User;
import com.example.blog.mapper.UserMapper;
import com.example.blog.util.RedisUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.List;
@RestController //后面返回的数据是json格式
public class userController {
@Autowired //注册bean
private UserMapper userMapper;
@Autowired
private RedisUtil redisUtil;
/**
* 用户登录接口
* @param userphone
* @param userpass
* @return result
*/
@GetMapping("/user/login")
public Result login(@RequestParam("userphone") String userphone, @RequestParam("userpass") String userpass){
Result result=new Result<>();
List<User> list = userMapper.login(userphone,userpass);
if(list.size() >0){
result=ResultGenerator.getSuccessResult("登录成功",list);
}
else {
result=ResultGenerator.getFailResult("登录失败,请注册",list);
}
return result;
}
/**
* 用户注册接口
* @param user
* @return result
*/
@PostMapping("/user/register")
public Result register(@RequestBody User user){
//先检查手机号是否存在
int count=0;
//初始化结果集
Result result=new Result<>();
count=userMapper.finduserByPhone(user.getUserphone());
if(count>0) {
result=ResultGenerator.getFailResult("重复注册",user);
}
else {
userMapper.addUser(user);
result=ResultGenerator.getSuccessResult("注册成功",user);
//删除全部缓存
redisUtil.cleanAll();
}
return result;
}
/**
* 用户修改的接口
* @param user
* @return result
*/
@PostMapping("/user/update")
public Result updateUser(@RequestBody User user){
//初始化结果集
Result result=new Result<>();
Integer count = userMapper.updateUser(user);
if(count >0){
result=ResultGenerator.getSuccessResult("修改成功",user);
redisUtil.cleanAll();
}
else{
result=ResultGenerator.getFailResult("修改失败",user);
}
return result;
}
/**
* 用户删除的接口
* @param id
* @return result
*/
@GetMapping("/user/delete")
public Result deleteUser(@RequestParam("id") Integer id){
//初始化结果集
Result result=new Result<>();
Integer count = userMapper.deleteUser(id);
if(count >0){
result=ResultGenerator.getSuccessResult("删除成功",count);
redisUtil.cleanAll();
}
else{
result=ResultGenerator.getFailResult("删除失败",count);
}
return result;
}
/**
* 用户数据分页的接口
* @param pageNum
* @param pageSize
* @return result
*/
@GetMapping("/user/pagin")
public Result userPagin(@RequestParam("pageNum") Integer pageNum,@RequestParam("pageSize") Integer pageSize){
//初始化结果集
Result result=new Result<>();
HashMap<String,Object> hashmap=new HashMap<>();
Integer index=(pageNum-1)*pageSize; //数据库数据的下标
List<User> users=userMapper.userPagin(index,pageSize);
Integer count=userMapper.getAllUsersNum(); //数据库里的所有数据总数
hashmap.put("users",users);
hashmap.put("count",users.size()); //获取得到的页面的数据数量
if (users.size()>0){
result=ResultGenerator.getSuccessResult("得到第"+pageNum+"页",hashmap);
}
else{
result=ResultGenerator.getFailResult("一共"+count+"条数据,不足以得到该页",hashmap);
}
return result;
}
/**
* 用户数据分页接口,结合用户名字进行模糊查询,并使用redis缓存key:user_paginCache,user_paginCountCache
* @param username
* @param pageNum
* @param pageSize
* @return result
*/
@GetMapping("/user/pagin_select")
public Result paginUser(@RequestParam("username")String username,@RequestParam("pageNum") Integer pageNum,@RequestParam("pageSize") Integer pageSize)
{
//初始化结果集
Result result=new Result<>();
HashMap<String,Object> hashmap = new HashMap();
//利用条件创建redis缓存的key
String cacheName= redisUtil.getCacheName("tb_users","paginUser","username",username,
"pageNum",pageNum.toString(),"pageSize",pageSize.toString());
//先在redis缓存中找数据,如果没有数据,再去数据库查询
List<User> user_paginCache = (List<User>) redisUtil.getCache(cacheName);
if(user_paginCache==null){
//拿到总条数
Integer count = userMapper.usersTotalCount(username);
//分页查询
// 将pageNum进行转换:pageNum:第几页,但是数据库limit需要的是开始查询的位置
Integer index=(pageNum-1)*pageSize; //数据库数据的下标
List<User> users = userMapper.paginUsers(username,index,pageSize);
//可以使用HashMap来保存总条数以及查询结果一起发送给前端
hashmap.put("users",users);
hashmap.put("count",users.size()); //获取得到的页面的数据数量
if (users.size()>0){
result= ResultGenerator.getSuccessResult("得到第"+pageNum+"页",hashmap);
//将数据加入redis缓存
redisUtil.setCache(cacheName,users);
System.out.println("使用数据库查询分页数据,现在将数据加入redis缓存");
}
else{
result=ResultGenerator.getFailResult("一共"+count+"条数据,不足以得到该页",hashmap);
}
}
else {
System.out.println("使用redis分页缓存数据");
hashmap.put("users",user_paginCache);
hashmap.put("count",user_paginCache.size()); //获取得到的页面的数据数量
result=ResultGenerator.getSuccessResult("得到第"+pageNum+"页",hashmap);
}
return result;
}
}
完整代码文件压缩包请自行下载使用:
链接: https://pan.baidu.com/s/1eQecBHj0KFwhTGOAarZfbQ?pwd=dpcs 提取码: dpcs