0
点赞
收藏
分享

微信扫一扫

Mybatis sql参数自动填充

独孤凌雪 2023-09-18 阅读 41

目录

SpringBoot集成Redis 

1.添加 redis 依赖  

2.配置 redis 

3.手动操作 redis   

Session持久化存储到Redis 

1.添加依赖

2.修改redis配置

3.存储和读取String类型的代码  

4.存储和读取对象类型的代码  

5.序列化细节


SpringBoot集成Redis 

1.添加 redis 依赖  

或将以下配置添加到 pom.xml 中:   

2.配置 redis 

3.手动操作 redis   

@RestController
public class RedisController {
    @Autowired
    private StringRedisTemplate stringRedisTemplate;
    // 在 redis 存储数据  30s之后自动失效
    @RequestMapping("/set")
    public String set(String name, String value) {
        stringRedisTemplate.opsForValue().set(name, value, 30, TimeUnit.SECONDS);
        return "Set redis success.";
    }
    // 读取 redis 中的数据
    @RequestMapping("/get")
    public String get(String name) {
        Object valObj = stringRedisTemplate.opsForValue().get(name);
        if (valObj != null) {
            return valObj.toString();
        }
        return "Null";
    }
}

通过postman发送请求测试: 

下面测试存入字典(Hash)类型: 

    // 在 redis 存储数据
    @RequestMapping("/set2")
    public String set2() {
        stringRedisTemplate.opsForHash().put("myhash","name","ws");
        return "Set redis success.";
    }
    // 读取 redis 中的数据
    @RequestMapping("/get2")
    public String get2() {
        Object valObj = stringRedisTemplate.opsForHash().get("myhash", "name");
        if (valObj != null) {
            return valObj.toString();
        }
        return "Null";
    }

Session持久化存储到Redis 

1.添加依赖

或者在pom.xml中引入: 

2.修改redis配置

3.存储和读取String类型的代码  

@RestController
@RequestMapping("/user")
public class UserController {
    // user session key
    private static final String SESSION_KEY_USERINFO = "SESSION_KEY_USERINFO";
    @RequestMapping("/set")
    public String set(HttpSession session) {
        session.setAttribute(SESSION_KEY_USERINFO, "ws");
        return "ok";
    }
    @RequestMapping("/get")
    public String get(HttpServletRequest request) {
        HttpSession session = request.getSession(false);
        Object userObj = null;
        if (session != null && (userObj = session.getAttribute(SESSION_KEY_USERINFO)) != null) {
            return (String) userObj;
        }
        return "Null";
    }
}

通过postman进行测试:

4.存储和读取对象类型的代码  

实体类:

@Data
public class UserInfo {
    private int id;
    private String username;
    private int age;
}

controller类:

@RestController
@RequestMapping("/user")
public class UserController {
    // user session key
    private static final String SESSION_KEY_USERINFO = "SESSION_KEY_USERINFO";
    @RequestMapping("/set")
    public String set(HttpSession session) {
        //...经过一系列的判断
        UserInfo userInfo = new UserInfo();
        userInfo.setId(1);
        userInfo.setUsername("ws");
        userInfo.setAge(18);
        session.setAttribute(SESSION_KEY_USERINFO, userInfo);
        return "ok";
    }
    @RequestMapping("/get")
    public UserInfo get(HttpServletRequest request) {
        HttpSession session = request.getSession(false);
        Object userObj = null;
        if (session != null && (userObj = session.getAttribute(SESSION_KEY_USERINFO)) != null) {
            return (UserInfo) userObj;
        }
        return null;
    }
}

通过postman测试:发现是序列化的问题 

解决方案: 

设置生成序列化版本号: 

在类上面ALT+ENTER: 

再次测试: 

5.序列化细节

再测试下: 

什么时候用static和transient?

 

举报

相关推荐

0 条评论