当前使用版本(必填,否则不予处理)
3.4.3.3
该问题是如何引起的?(确定最新版也有问题再提!!!)
Java Bean
@Data
@Accessors(chain = true)
@TableName(autoResultMap = true)
public class PlatLoginUser {
private Long id;
private String username;
private String password;
@TableField(property = "permissions", typeHandler = PlatRolePermissionTypeHandler.class)
private List<PlatRolePermission> permissions;
Mybatis XML
<select id="findLoginByUsername" parameterType="string" resultType="com.nexus.data.entity.PlatLoginUser">
SELECT u.id, u.username, u.password, r.permissions FROM t_plat_user u
LEFT JOIN t_plat_group_x_role x ON x.group_id = u.group_id LEFT JOIN t_plat_role r ON r.id = x.role_id
WHERE u.username = #username
</select>
Type handler
public class PlatRolePermissionTypeHandler extends JacksonTypeHandler {
public PlatRolePermissionTypeHandler(Class<?> type) {
super(type);
}
@Override
protected Object parse(String json) {
try {
return getObjectMapper().readValue(json, new TypeReference<List<PlatRolePermission>>() {
});
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
重现步骤(如果有就写完整)
PlatLoginUser user = userMapper.findLoginByUsername("admin");
System.out.println(user);
user.getPermissions().forEach(permission -> {
System.out.println(permission.getName());
});
获取自定义对象返回集,自定义typehandler属性为null,PlatRolePermissionTypeHandler 里面json和return object均正常。
报错信息
Comment From: miemieYaho
自己xml写的select 用resultmap