List of usage examples for org.apache.ibatis.mapping ParameterMapping.Builder numericScale
Integer numericScale
To view the source code for org.apache.ibatis.mapping ParameterMapping.Builder numericScale.
Click Source Link
From source file:com.ibatis.sqlmap.engine.builder.InlineParameterMapParser.java
License:Apache License
private ParameterMapping newParseMapping(String token, Class<?> parameterClass) { // #propertyName,javaType=string,jdbcType=VARCHAR,mode=IN,nullValue=N/A,handler=string,numericScale=2# StringTokenizer paramParser = new StringTokenizer(token, "=, ", false); String propertyName = paramParser.nextToken(); TypeHandler<?> typeHandler = null; Class<?> javaType = null; JdbcType jdbcType = null;//from ww w.j a v a2 s. c o m ParameterMode parameterMode = null; Integer numericScale = null; while (paramParser.hasMoreTokens()) { String field = paramParser.nextToken(); if (paramParser.hasMoreTokens()) { String value = paramParser.nextToken(); if ("javaType".equals(field)) { try { javaType = typeAliasRegistry.resolveAlias(value); } catch (Exception e) { throw new SqlMapException("Error loading javaType class"); } } else if ("jdbcType".equals(field)) { jdbcType = JdbcType.valueOf(value); } else if ("mode".equals(field)) { parameterMode = ParameterMode.valueOf(value); } else if ("nullValue".equals(field)) { throw new UnsupportedOperationException("iBATIS 3 does not support null value substitution."); } else if ("handler".equals(field)) { try { Object impl = typeAliasRegistry.resolveAlias(value).newInstance(); typeHandler = ((TypeHandler<?>) impl); } catch (Exception e) { throw new SqlMapException( "Error loading class specified by handler field in " + token + ". Cause: " + e, e); } } else if ("numericScale".equals(field)) { try { numericScale = Integer.valueOf(value); if (numericScale < 0) { throw new SqlMapException( "Value specified for numericScale must be greater than or equal to zero"); } } catch (NumberFormatException e) { throw new SqlMapException("Value specified for numericScale is not a valid Integer"); } } else { throw new SqlMapException("Unrecognized parameter mapping field: '" + field + "' in " + token); } } else { throw new SqlMapException( "Incorrect inline parameter map format (missmatched name=value pairs): " + token); } } if (typeHandler == null) { if (parameterClass == null) { typeHandler = typeHandlerRegistry.getUnknownTypeHandler(); } else { String javaTypeString = javaType == null ? null : javaType.getName(); typeHandler = resolveTypeHandler(parameterClass, propertyName, javaTypeString, jdbcType); } } if (propertyName != null && propertyName.startsWith("[")) { propertyName = "_collection" + propertyName; } ParameterMapping.Builder mapping = new ParameterMapping.Builder(configuration, propertyName, typeHandler); mapping.javaType(javaType); mapping.jdbcType(jdbcType); mapping.mode(parameterMode); mapping.numericScale(numericScale); return mapping.build(); }
From source file:com.ibatis.sqlmap.engine.builder.XmlSqlMapParser.java
License:Apache License
@NodeEvent("/sqlMap/parameterMap/parameter") public void sqlMapparameterMapparameter(XNode context) throws Exception { String nullValue = context.getStringAttribute("nullValue"); if (nullValue != null) { throw new UnsupportedOperationException("Null value subsitution is not supported by iBATIS 3."); }// w w w .j av a2s.co m String propertyName = context.getStringAttribute("property"); String jdbcType = context.getStringAttribute("jdbcType"); String javaType = context.getStringAttribute("javaType"); String resultMap = context.getStringAttribute("resultMap"); String mode = context.getStringAttribute("mode"); String callback = context.getStringAttribute("typeHandler"); String numericScaleProp = context.getStringAttribute("numericScale"); Class javaClass = null; try { if (javaType != null && javaType.length() > 0) { javaClass = config.getTypeAliasRegistry().resolveAlias(javaType); } } catch (Exception e) { throw new RuntimeException("Error setting javaType on parameter mapping. Cause: " + e); } JdbcType jdbcTypeEnum = null; if (jdbcType != null) { jdbcTypeEnum = JdbcType.valueOf(jdbcType); } TypeHandler typeHandler = null; if (javaClass != null) { typeHandler = config.getTypeHandlerRegistry().getTypeHandler(javaClass, jdbcTypeEnum); } if (callback != null) { Object o = config.getTypeAliasRegistry().resolveAlias(callback).newInstance(); if (o instanceof TypeHandlerCallback) { typeHandler = new TypeHandlerCallbackAdapter((TypeHandlerCallback) o); } } if (typeHandler == null && config.getTypeHandlerRegistry().hasTypeHandler(parameterMapBuilder.type())) { typeHandler = config.getTypeHandlerRegistry().getTypeHandler(parameterMapBuilder.type()); } if (typeHandler == null) { Class parameterClass = parameterMapBuilder.type(); if (parameterClass != null && !Map.class.isAssignableFrom(parameterClass)) { MetaClass metaParamClass = MetaClass.forClass(parameterClass); Class paramType = null; if (metaParamClass.hasGetter(propertyName)) { paramType = metaParamClass.getGetterType(propertyName); } else if (metaParamClass.hasSetter(propertyName)) { paramType = metaParamClass.getSetterType(propertyName); } if (paramType != null) { typeHandler = config.getTypeHandlerRegistry().getTypeHandler(paramType); } } else { typeHandler = config.getTypeHandlerRegistry().getUnknownTypeHandler(); } } ParameterMode paramModeEnum = ParameterMode.IN; if (mode != null) { paramModeEnum = ParameterMode.valueOf(mode); } Integer numericScale = null; if (numericScaleProp != null) { numericScale = new Integer(numericScaleProp); } ParameterMapping.Builder parameterMappingBuilder = new ParameterMapping.Builder(config, propertyName, typeHandler); parameterMappingBuilder.javaType(javaClass); parameterMappingBuilder.jdbcType(jdbcTypeEnum); parameterMappingBuilder.mode(paramModeEnum); parameterMappingBuilder.numericScale(numericScale); parameterMappingBuilder.resultMapId(resultMap); parameterMappingList.add(parameterMappingBuilder.build()); }