文件方式
在接口的方法上通过使用 dbVisitor 提供的注解来定义 Redis 命令,这些方法充当数据库访问的媒介,从而避免复杂的操作代码。
提示
在 XML Mapper 文件中,通过 select 标签配置对象序列化映射时,需要指定 resultType 属性才可以正确发现对象上的 BindTypeHandler 注解信息。
- 方式 1 借助 BindTypeHandler 注解
- 方式 2 使用无侵入式
1. 定义对象并绑定 JSON 序列化
@BindTypeHandler(JsonTypeHandler.class)
public class UserInfo {
private String uid;
private String name;
... // 省略 getter/setter 方法
}
2. 定义 Mapper 文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//dbvisitor.net//DTD Mapper 1.0//EN"
"https://www.dbvisitor.net/schema/dbvisitor-mapper.dtd">
<mapper namespace="net.test.dto.UserInfoMapper">
<insert id="saveUser">
set #{'user_' + uid} #{info}
</insert>
<select id="loadUser" resultType="net.test.dto.UserInfo">
get #{'user_' + uid}
</select>
<delete id="deleteUser">
del #{'user_' + uid}
</delete>
</mapper>
1. 定义对象,不 使用 BindTypeHandler 注解
public class UserInfo {
private String uid;
private String name;
... // 省略 getter/setter 方法
}
2. 定义 Mapper 文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//dbvisitor.net//DTD Mapper 1.0//EN"
"https://www.dbvisitor.net/schema/dbvisitor-mapper.dtd">
<mapper namespace="net.test.dto.UserInfoMapper">
<insert id="saveUser">
set #{'user_' + uid}
#{info, typeHandler=net.hasor.dbvisitor.types.handler.json.JsonTypeHandler}
</insert>
<!-- 需要同事指定 resultTypeHandler 和 resultType 属性 -->
<select id="loadUser1"
resultTypeHandler="net.hasor.dbvisitor.types.handler.json.JsonTypeHandler"
resultType="net.test.dto.UserInfo">
get #{'user_' + uid}
</select>
<select id="loadUser2" resultType="net.test.dto.UserInfo">
get #{'user_' + uid}
</select>
<delete id="deleteUser">
del #{'user_' + uid}
</delete>
</mapper>
3. 定义 Mapper 接口
@RefMapper("dbvisitor/mapper/UserInfoMapper.xml")
public interface UserInfoMapper {
int saveUser(@Param("info") UserInfo info);
UserInfo loadUser(@Param("uid") String uid);
int deleteUser(@Param("uid") String uid);
}
4. 创建通用 Mapper
// 1,创建 Configuration
Configuration config = new Configuration();
// 2,创建 Session
Session session = config.newSession(dataSource);
或者
Session session = config.newSession(connection);
// 3,创建 UserInfoMapper
UserInfoMapper mapper = session.createMapper(UserInfoMapper.class);
支持的命令
完整的 Redis 命令支持性可参考 支持的命令列表