private static <T, K> QueryPreparer<K> buildDelete(ClassMeta<K> keyTarget, CrudMeta crudMeta, JdbcMapperFactory jdbcMapperFactory) throws SQLException { StringBuilder sb = new StringBuilder("DELETE FROM "); appendTableName(sb, crudMeta); addWhereOnPrimaryKeys(crudMeta, sb); return jdbcMapperFactory.<K>from(keyTarget).to(NamedSqlQuery.parse(sb)); }
private static <T, K> QueryPreparer<K> buildDelete(ClassMeta<K> keyTarget, CrudMeta crudMeta, JdbcMapperFactory jdbcMapperFactory) throws SQLException { StringBuilder sb = new StringBuilder("DELETE FROM "); appendTableName(sb, crudMeta); addWhereOnPrimaryKeys(crudMeta, sb); return jdbcMapperFactory.<K>from(keyTarget).to(NamedSqlQuery.parse(sb)); }
private static <T, K> QueryPreparer<K> buildSelect(ClassMeta<K> keyTarget, CrudMeta crudMeta, JdbcMapperFactory jdbcMapperFactory) throws SQLException { StringBuilder sb = new StringBuilder("SELECT "); boolean first = true; for(ColumnMeta cm : crudMeta.getColumnMetas()) { if (!first) { sb.append(", "); } crudMeta.appendProtectedField(sb, cm.getColumn()); first = false; } sb.append(" FROM "); appendTableName(sb, crudMeta); addWhereOnPrimaryKeys(crudMeta, sb); return jdbcMapperFactory.<K>from(keyTarget).to(NamedSqlQuery.parse(sb)); }
private static <T, K> QueryPreparer<K> buildSelect(ClassMeta<K> keyTarget, CrudMeta crudMeta, JdbcMapperFactory jdbcMapperFactory) throws SQLException { StringBuilder sb = new StringBuilder("SELECT "); boolean first = true; for(ColumnMeta cm : crudMeta.getColumnMetas()) { if (!first) { sb.append(", "); } crudMeta.appendProtectedField(sb, cm.getColumn()); first = false; } sb.append(" FROM "); appendTableName(sb, crudMeta); addWhereOnPrimaryKeys(crudMeta, sb); return jdbcMapperFactory.<K>from(keyTarget).to(NamedSqlQuery.parse(sb)); }
private <P> SelectQueryImpl<T, P> newSelectQuery(String whereClause, Type paramClass) { String query = sqlQuery(whereClause); QueryPreparer<P> queryPreparer = jdbcMapperFactory.<P>from(paramClass).to(NamedSqlQuery.parse(query)); return new SelectQueryImpl<T, P>(queryPreparer, jdbcMapper); }
private <P> SelectQueryImpl<T, P> newSelectQuery(String whereClause, Type paramClass) { String query = sqlQuery(whereClause); QueryPreparer<P> queryPreparer = jdbcMapperFactory.<P>from(paramClass).to(NamedSqlQuery.parse(query)); return new SelectQueryImpl<T, P>(queryPreparer, jdbcMapper); }
List<String> keys = new ArrayList<String>(); PreparedStatementMapperBuilder<T> statementMapperBuilder = jdbcMapperFactory.<T>from(target); for(ColumnMeta cm : crudMeta.getColumnMetas()) { String columnName = cm.getColumn();
return jdbcMapperFactory.<T>from(target).to(NamedSqlQuery.parse(sb), generatedKeys.isEmpty() ? null : generatedKeys.toArray(new String[0]));
List<String> updateColumns = new ArrayList<String>(); PreparedStatementMapperBuilder<T> statementMapperBuilder = jdbcMapperFactory.<T>from(target); for(ColumnMeta cm : crudMeta.getColumnMetas()) { String columnName = cm.getColumn();
private static <T, K> KeyTupleQueryPreparer<K> buildKeyTupleQueryPreparer(ClassMeta<K> keyTarget, CrudMeta crudMeta, JdbcMapperFactory jdbcMapperFactory) { PreparedStatementMapperBuilder<K> builder = jdbcMapperFactory.from(keyTarget); List<String> primaryKeys = new ArrayList<String>(); int i = 1; for(ColumnMeta cm : crudMeta.getColumnMetas()) { if (cm.isKey()) { primaryKeys.add(cm.getColumn()); builder.addColumn(cm.toJdbcColumnKey(i)); i++; } } DefaultContextFactoryBuilder contextFactoryBuilder = new DefaultContextFactoryBuilder(); MultiIndexFieldMapper<K>[] multiIndexFieldMappers = builder.buildIndexFieldMappers(contextFactoryBuilder); return new KeyTupleQueryPreparer<K>(multiIndexFieldMappers, contextFactoryBuilder.build(), primaryKeys.toArray(new String[0])); }
return jdbcMapperFactory.<T>from(target).to(NamedSqlQuery.parse(sb), generatedKeys.isEmpty() ? null : generatedKeys.toArray(new String[0]));
private static <T, K> KeyTupleQueryPreparer<K> buildKeyTupleQueryPreparer(ClassMeta<K> keyTarget, CrudMeta crudMeta, JdbcMapperFactory jdbcMapperFactory) { PreparedStatementMapperBuilder<K> builder = jdbcMapperFactory.from(keyTarget); List<String> primaryKeys = new ArrayList<String>(); int i = 1; for(ColumnMeta cm : crudMeta.getColumnMetas()) { if (cm.isKey()) { primaryKeys.add(cm.getColumn()); builder.addColumn(cm.toJdbcColumnKey(i)); i++; } } DefaultContextFactoryBuilder contextFactoryBuilder = new DefaultContextFactoryBuilder(); MultiIndexFieldMapper<K>[] multiIndexFieldMappers = builder.buildIndexFieldMappers(contextFactoryBuilder); return new KeyTupleQueryPreparer<K>(multiIndexFieldMappers, contextFactoryBuilder.build(), primaryKeys.toArray(new String[0])); }
private static <T, K> QueryPreparer<T> buildUpdate(ClassMeta<T> target, CrudMeta crudMeta, JdbcMapperFactory jdbcMapperFactory) throws SQLException { StringBuilder sb = new StringBuilder("UPDATE "); appendTableName(sb, crudMeta); sb.append(" SET "); boolean first = true; for(ColumnMeta cm : crudMeta.getColumnMetas()) { String columnName = cm.getColumn(); if (!cm.isKey()) { if (!first) { sb.append(", "); } crudMeta.appendProtectedField(sb, columnName); sb.append(" = ?"); first = false; } } if (first) { // no field to update return null; } addWhereOnPrimaryKeys(crudMeta, sb); return jdbcMapperFactory.<T>from(target).to(NamedSqlQuery.parse(sb)); }
private static <T, K> QueryPreparer<T> buildUpdate(ClassMeta<T> target, CrudMeta crudMeta, JdbcMapperFactory jdbcMapperFactory) throws SQLException { StringBuilder sb = new StringBuilder("UPDATE "); appendTableName(sb, crudMeta); sb.append(" SET "); boolean first = true; for(ColumnMeta cm : crudMeta.getColumnMetas()) { String columnName = cm.getColumn(); if (!cm.isKey()) { if (!first) { sb.append(", "); } crudMeta.appendProtectedField(sb, columnName); sb.append(" = ?"); first = false; } } if (first) { // no field to update return null; } addWhereOnPrimaryKeys(crudMeta, sb); return jdbcMapperFactory.<T>from(target).to(NamedSqlQuery.parse(sb)); }
List<String> updateColumns = new ArrayList<String>(); PreparedStatementMapperBuilder<T> statementMapperBuilder = jdbcMapperFactory.<T>from(target); for(ColumnMeta cm : crudMeta.getColumnMetas()) { String columnName = cm.getColumn();
@Test public void testSelectWithInList() throws SQLException { NamedSqlQuery selectInListQuery = NamedSqlQuery.parse("select * from Table where name in (?) and id = ? "); QueryPreparer<QueryParamList> selectInListMapper = jdbcMapperFactory.from(QueryParamList.class).to(selectInListQuery); Connection conn = mock(Connection.class); PreparedStatement mps = mock(PreparedStatement.class); QueryParamList value = new QueryParamList(); value.name = Arrays.asList("name1", "name2"); value.id = 3334; when(conn.prepareStatement("select * from Table where name in (?, ?) and id = ? ")).thenReturn(mps); PreparedStatement ps = selectInListMapper.prepare(conn).bind(value); assertSame(mps, ps); verify(mps).setString(1, "name1"); verify(mps).setString(2, "name2"); verify(mps).setInt(3, 3334); }
@Test public void testSelectWithInArray() throws SQLException { NamedSqlQuery selectInListQuery = NamedSqlQuery.parse("select * from Table where name = ? and id in (?) "); QueryPreparer<QueryParamArray> selectInListMapper = jdbcMapperFactory.from(QueryParamArray.class).to(selectInListQuery); Connection conn = mock(Connection.class); PreparedStatement mps = mock(PreparedStatement.class); QueryParamArray value = new QueryParamArray(); value.name = "nannme"; value.id = new int[] { 3334, 3336 }; when(conn.prepareStatement("select * from Table where name = ? and id in (?, ?) ")).thenReturn(mps); PreparedStatement ps = selectInListMapper.prepare(conn).bind(value); assertSame(mps, ps); verify(mps).setString(1, "nannme"); verify(mps).setInt(2, 3334); verify(mps).setInt(3, 3336); }
@Test public void testQueryBinderClosePsOnException() throws SQLException { NamedSqlQuery query = NamedSqlQuery.parse("select id, name, email, creation_time, type_ordinal, type_name from TEST_DB_OBJECT where id = ? "); QueryPreparer<DbObject> queryPreparer = jdbcMapperFactory .from(DbObject.class).to(query); Connection conn = mock(Connection.class); PreparedStatement ps = mock(PreparedStatement.class); when(conn.prepareStatement(anyString())).thenReturn(ps); doThrow(new IllegalStateException()).when(ps).setLong(anyInt(), anyLong()); try { queryPreparer.prepare(conn).bind(DbObject.newInstance()); fail(); } catch(IllegalStateException e) { // expected } verify(ps).close(); }
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; } }