Search in sources :

Example 1 with Case

use of org.apache.ibatis.annotations.Case in project mybatis-3 by mybatis.

the class MapperAnnotationBuilder method applyDiscriminator.

private Discriminator applyDiscriminator(String resultMapId, Class<?> resultType, TypeDiscriminator discriminator) {
    if (discriminator != null) {
        String column = discriminator.column();
        Class<?> javaType = discriminator.javaType() == void.class ? String.class : discriminator.javaType();
        JdbcType jdbcType = discriminator.jdbcType() == JdbcType.UNDEFINED ? null : discriminator.jdbcType();
        @SuppressWarnings("unchecked") Class<? extends TypeHandler<?>> typeHandler = (Class<? extends TypeHandler<?>>) (discriminator.typeHandler() == UnknownTypeHandler.class ? null : discriminator.typeHandler());
        Case[] cases = discriminator.cases();
        Map<String, String> discriminatorMap = new HashMap<String, String>();
        for (Case c : cases) {
            String value = c.value();
            String caseResultMapId = resultMapId + "-" + value;
            discriminatorMap.put(value, caseResultMapId);
        }
        return assistant.buildDiscriminator(resultType, column, javaType, jdbcType, typeHandler, discriminatorMap);
    }
    return null;
}
Also used : HashMap(java.util.HashMap) UnknownTypeHandler(org.apache.ibatis.type.UnknownTypeHandler) JdbcType(org.apache.ibatis.type.JdbcType) TypeHandler(org.apache.ibatis.type.TypeHandler) UnknownTypeHandler(org.apache.ibatis.type.UnknownTypeHandler) Case(org.apache.ibatis.annotations.Case)

Example 2 with Case

use of org.apache.ibatis.annotations.Case in project mybatis-3 by mybatis.

the class MapperAnnotationBuilder method createDiscriminatorResultMaps.

private void createDiscriminatorResultMaps(String resultMapId, Class<?> resultType, TypeDiscriminator discriminator) {
    if (discriminator != null) {
        for (Case c : discriminator.cases()) {
            String caseResultMapId = resultMapId + "-" + c.value();
            List<ResultMapping> resultMappings = new ArrayList<ResultMapping>();
            // issue #136
            applyConstructorArgs(c.constructArgs(), resultType, resultMappings);
            applyResults(c.results(), resultType, resultMappings);
            // TODO add AutoMappingBehaviour
            assistant.addResultMap(caseResultMapId, c.type(), resultMapId, null, resultMappings, null);
        }
    }
}
Also used : ResultMapping(org.apache.ibatis.mapping.ResultMapping) ArrayList(java.util.ArrayList) Case(org.apache.ibatis.annotations.Case)

Aggregations

Case (org.apache.ibatis.annotations.Case)2 ArrayList (java.util.ArrayList)1 HashMap (java.util.HashMap)1 ResultMapping (org.apache.ibatis.mapping.ResultMapping)1 JdbcType (org.apache.ibatis.type.JdbcType)1 TypeHandler (org.apache.ibatis.type.TypeHandler)1 UnknownTypeHandler (org.apache.ibatis.type.UnknownTypeHandler)1