Mapper File
Hint
This article is generated by AI translation.
Define Redis commands in Mapper files rather than hardcoding them, so interfaces act as the access layer without extra code.
Tip
In XML Mapper files, when configuring object serialization on a select tag you must set resultType so BindTypeHandler annotations can be detected correctly.
- Option 1: Use BindTypeHandler
- Option 2: Normal
1. Define the object and bind JSON serialization
@BindTypeHandler(JsonTypeHandler.class)
public class UserInfo {
private String uid;
private String name;
... // getters/setters omitted
}
2. Define the Mapper file
<?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. Define the object without BindTypeHandler
public class UserInfo {
private String uid;
private String name;
... // getters/setters omitted
}
2. Define the Mapper file
<?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>
<!-- Specify both resultTypeHandler and resultType attributes -->
<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. Define the Mapper interface
@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. Create the Mapper
// 1. Create Configuration
Configuration config = new Configuration();
// 2. Create Session
Session session = config.newSession(dataSource);
// or
Session session = config.newSession(connection);
// 3. Create UserInfoMapper
UserInfoMapper mapper = session.createMapper(UserInfoMapper.class);
Supported Commands
See the full supported command list for Redis coverage.