当前使用版本(必填,否则不予处理)

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