Spring整合Redis详解

用注解驱动的方式来使用 Redis。和数据库事务一样,Spring 提供了缓存的管理器和相关的注解来支持类似于 Redis 这样的键值对缓存。

准备测试环境

首先,定义一个简单的角色 POJO,代码如下所示。

package com.pojo;
import java.io.Serializable;
public class Role implements Serializable {
   
    private static final long serialVersionUID = 3447499459461375642L;

    private long id;
    private String roleName;
    private String note;
    // 省略setter和getter方法
}

注意:该类实现了 Serializable 接口,这说明这个类支持序列化,这样就可以通过 Spring 的序列化器,将其保存为对应的编码,缓存到 Redis 中,也可以通过 Redis 读回那些编码,反序列化为对应的 Java 对象。

接下来是关于 MyBatis 的开发环境,这样我们就可以操作数据库了。创建 RoleMapper.xml,代码如下所示。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dao.RoleDao">
    <select id="getRole" resultType="com.pojo.Role">
        select id, role_name as
        roleName, note from t_role where id = #{
   id}
    </select>
    <delete id="deleteRole">
        delete from t_role where id=#{
   id}
    </delete>
    <insert id="insertRole" parameterType="com.pojo.Role"
        useGeneratedKeys="true" keyProperty="id">
        insert into t_role (role_name,
        note) values(#{
   roleName}, #{
   note})
    </insert>
    <update id="updateRole" parameterType="com.pojo.Role">
        update t_role set
        role_name = #{
   roleName}, note = #{
   note} where id = #{
   id}
    </update>
    <select id="findRoles" resultType="com.pojo.Role">
        select id, role_name as roleName, note from t_role
        <where>
            <if test="roleName != null">
                role_name like concat('%', #{
   roleName}, '%')
            </if>
            <if test="note != null">
                note like concat ('%', #{
   note},'%')
            </if>
        </where>
    </select>
</mapper>

然后,需要一个 MyBatis 角色接口,以便使用这样的一个映射文件,代码如下所示。

package com.dao;

import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.pojo.Role;

public interface RoleDao {
   
    public Role getRole(Long id);

    public int deleteRole(Long id);

    public int insertRole(Role role);

    public int updateRole(Role role);

    public List<Role> findRoles(@Param("roleName") String roleName, @Param("note") String note);
}

注解 @Repository 表示它是一个持久层的接口。通过扫描和注解联合定义 DAO 层,就完成了映射器方面的内容。定义角色服务接口(RoleService),代码如下所示,不过服务接口实现类会在后面谈起,因为它需要加入 Spring 缓存注解,以驱动不同的行为。

package com.service;

import java.util.List;
import com.pojo.Role;

public interface RoleService {
   
    public Role getRole(Long id);

    public int deleteRole(Long id);

    public Role insertRole(Role role);

    public int updateRole(Role role);

    public List<Role> findRoles
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值