public int getSqlType(Object[] properties) { if (properties != null) { for(int i = 0; i < properties.length; i++) { Object prop = properties[i]; if (prop instanceof SqlTypeColumnProperty) { return ((SqlTypeColumnProperty)prop).getSqlType(); } } } return sqlType; }
public static SqlTypeColumnProperty of(int sqlType) { return new SqlTypeColumnProperty(sqlType); } }
public void addColumnProperties(JdbcMapperFactory mapperFactory) { for(ColumnMeta columnMeta : columnMetas) { mapperFactory.addColumnProperty(columnMeta.getColumn(), SqlTypeColumnProperty.of(columnMeta.getSqlType())); if (columnMeta.isKey()) { mapperFactory.addColumnProperty(columnMeta.getColumn(), KeyProperty.DEFAULT); } } }
public void addColumnProperties(JdbcMapperFactory mapperFactory) { for(ColumnMeta columnMeta : columnMetas) { mapperFactory.addColumnProperty(columnMeta.getColumn(), SqlTypeColumnProperty.of(columnMeta.getSqlType())); if (columnMeta.isKey()) { mapperFactory.addColumnProperty(columnMeta.getColumn(), KeyProperty.DEFAULT); } } }
@Test public void testBigInteger() throws Exception { BigDecimal bg = new BigDecimal("314"); when(resultSet.getBigDecimal(1)).thenReturn(bg); Getter<ResultSet, BigInteger> getter = factory.newGetter(BigInteger.class, key(Types.DECIMAL), IDENTITY.properties()); assertEquals(bg.toBigInteger(), getter.get(resultSet)); reset(resultSet); when(resultSet.getBigDecimal(1)).thenReturn(null); assertNull(getter.get(resultSet)); reset(resultSet); getter = factory.newGetter(BigInteger.class, key(Types.VARCHAR), IDENTITY.properties()); when(resultSet.getString(1)).thenReturn("314"); assertEquals(bg.toBigInteger(), getter.get(resultSet)); reset(resultSet); when(resultSet.getString(1)).thenReturn(null); assertNull(getter.get(resultSet)); reset(resultSet); getter = factory.newGetter(BigInteger.class, key(Types.DECIMAL), IDENTITY.add(SqlTypeColumnProperty.of(Types.VARCHAR)).properties()); when(resultSet.getString(1)).thenReturn("314"); assertEquals(bg.toBigInteger(), getter.get(resultSet)); reset(resultSet); when(resultSet.getString(1)).thenReturn(null); assertNull(getter.get(resultSet)); }
public int getSqlType(Object[] properties) { if (properties != null) { for(int i = 0; i < properties.length; i++) { Object prop = properties[i]; if (prop instanceof SqlTypeColumnProperty) { return ((SqlTypeColumnProperty)prop).getSqlType(); } } } return sqlType; }
public static SqlTypeColumnProperty of(int sqlType) { return new SqlTypeColumnProperty(sqlType); } }
private QueryPreparer<T> getQueryPreparer(SQLStatement<?> sqlStatement, SfmBind annotation, Class<?> aClass) { QueryPreparerKey key = new QueryPreparerKey(sqlStatement.getContext().getRawSql(), aClass); QueryPreparer<T> queryPreparer = cache.get(key); if (queryPreparer == null) { NamedSqlQuery parse = NamedSqlQuery.parse(sqlStatement.getContext().getRawSql()); JdbcMapperFactory jdbcMapperFactory = JdbcMapperFactory .newInstance(); for (SqlType col : annotation.sqlTypes()) { jdbcMapperFactory.addColumnProperty(col.name(), SqlTypeColumnProperty.of(col.type())); } queryPreparer = jdbcMapperFactory.<T>from(aClass).to(parse); QueryPreparer<T> cachedQP = cache.putIfAbsent(key, queryPreparer); if (cachedQP != null) { queryPreparer = cachedQP; } } return queryPreparer; } }
private static int getParameterType(PropertyMapping<?, ?, JdbcColumnKey> pm) { Class<?> propertyType = TypeHelper.toClass(pm.getPropertyMeta().getPropertyType()); if (pm.getColumnDefinition().has(SqlTypeColumnProperty.class)) { return pm.getColumnDefinition().lookFor(SqlTypeColumnProperty.class).getSqlType(); } int t = StatementCreatorUtils.javaTypeToSqlParameterType(propertyType); if (t == SqlTypeValue.TYPE_UNKNOWN) { //IFJAVA8_START if (propertyType.equals(ZonedDateTime.class) || propertyType.equals(OffsetDateTime.class)) { return Types.TIMESTAMP_WITH_TIMEZONE; } if (propertyType.equals(Instant.class) || propertyType.equals(LocalDateTime.class)) { return Types.TIMESTAMP; } if (propertyType.equals(LocalDate.class)) { return Types.DATE; } if (propertyType.equals(LocalTime.class)) { return Types.TIME; } //IFJAVA8_END return JdbcColumnKey.UNDEFINED_TYPE; } return t; }
@Test public void testBigDecimal() throws Exception { BigDecimal bg = new BigDecimal("3.14"); when(resultSet.getBigDecimal(1)).thenReturn(bg); Getter<ResultSet, BigDecimal> getter = factory.newGetter(BigDecimal.class, key(Types.DECIMAL), IDENTITY.properties()); assertEquals(bg, getter.get(resultSet)); reset(resultSet); when(resultSet.getBigDecimal(1)).thenReturn(null); assertNull(getter.get(resultSet)); reset(resultSet); getter = factory.newGetter(BigDecimal.class, key(Types.VARCHAR), IDENTITY.properties()); when(resultSet.getString(1)).thenReturn("3.14"); assertEquals(bg, getter.get(resultSet)); reset(resultSet); when(resultSet.getString(1)).thenReturn(null); assertNull(getter.get(resultSet)); reset(resultSet); getter = factory.newGetter(BigDecimal.class, key(Types.DECIMAL), IDENTITY.add(SqlTypeColumnProperty.of(Types.VARCHAR)).properties()); when(resultSet.getString(1)).thenReturn("3.14"); assertEquals(bg, getter.get(resultSet)); reset(resultSet); when(resultSet.getString(1)).thenReturn(null); assertNull(getter.get(resultSet)); }
@Override protected JdbcColumnKey newKey(String column, int i, FieldMapperColumnDefinition<JdbcColumnKey> columnDefinition) { JdbcColumnKey key = new JdbcColumnKey(column, i); SqlTypeColumnProperty typeColumnProperty = columnDefinition.lookFor(SqlTypeColumnProperty.class); if (typeColumnProperty == null) { ColumnDefinition<JdbcColumnKey, ?> globalDef = mapperConfig.columnDefinitions().getColumnDefinition(key); typeColumnProperty = globalDef.lookFor(SqlTypeColumnProperty.class); } if (typeColumnProperty != null) { return new JdbcColumnKey(key.getName(), key.getIndex(), typeColumnProperty.getSqlType(), key); } return key; }
@Override protected JdbcColumnKey newKey(String column, int i, FieldMapperColumnDefinition<JdbcColumnKey> columnDefinition) { JdbcColumnKey key = new JdbcColumnKey(column, i); SqlTypeColumnProperty typeColumnProperty = columnDefinition.lookFor(SqlTypeColumnProperty.class); if (typeColumnProperty == null) { ColumnDefinition<JdbcColumnKey, ?> globalDef = mapperConfig.columnDefinitions().getColumnDefinition(key); typeColumnProperty = globalDef.lookFor(SqlTypeColumnProperty.class); } if (typeColumnProperty != null) { return new JdbcColumnKey(key.getName(), key.getIndex(), typeColumnProperty.getSqlType(), key); } return key; }