@Override public <T extends Storable> Collection<T> select(String namespace, List<OrderByField> orderByFields) { return executeQuery(namespace, new MySqlSelectQuery(namespace, orderByFields)); }
@Override protected String getParameterizedSql() { String sql = "SELECT * FROM " + tableName; //where clause is defined by columns specified in the PrimaryKey if (columns != null) { sql += " WHERE " + join(getColumnNames(columns, "`%s` = ?"), " AND "); } LOG.debug(sql); return sql; }
@Override protected String getParameterizedSql() { String sql = super.getParameterizedSql(); sql += " FOR SHARE"; LOG.debug(sql); return sql; } }
@Test public void testSelectQuery() throws Exception { MySqlSelectQuery mySqlSelectQuery = new MySqlSelectQuery(nameSpace); String parametrizedSql = mySqlSelectQuery.getParametrizedSql(); Assert.assertEquals("SELECT * FROM topic", parametrizedSql); Map<Schema.Field, Object> fieldToObjectMap = new HashMap<>(); fieldToObjectMap.put(new Schema.Field("foo", Schema.Type.LONG), 1); mySqlSelectQuery = new MySqlSelectQuery(new StorableKey(nameSpace, new PrimaryKey(fieldToObjectMap))); parametrizedSql = mySqlSelectQuery.getParametrizedSql(); Assert.assertEquals("SELECT * FROM topic WHERE `foo` = ?", parametrizedSql); }
@Override protected String orderBySql() { String sql = ""; if (orderByFields != null && !orderByFields.isEmpty()) { sql += join(orderByFields.stream() .map(x -> " ORDER BY `" + x.getFieldName() + "` " + (x.isDescending() ? "DESC" : "ASC")) .collect(Collectors.toList()), ","); } return sql; } }
@Test public void testSelectQueryWithOrderBy() throws Exception { List<OrderByField> orderByFields = Arrays.asList(OrderByField.of("foo", true), OrderByField.of("bar")); MySqlSelectQuery mySqlSelectQuery = new MySqlSelectQuery("topic", orderByFields); String parametrizedSql = mySqlSelectQuery.getParametrizedSql(); Assert.assertEquals("SELECT * FROM topic ORDER BY `foo` DESC, ORDER BY `bar` ASC", parametrizedSql); Map<Schema.Field, Object> fieldToObjectMap = new HashMap<>(); fieldToObjectMap.put(new Schema.Field("foo", Schema.Type.LONG), 1); mySqlSelectQuery = new MySqlSelectQuery(new StorableKey(nameSpace, new PrimaryKey(fieldToObjectMap)), orderByFields); parametrizedSql = mySqlSelectQuery.getParametrizedSql(); Assert.assertEquals("SELECT * FROM topic WHERE `foo` = ? ORDER BY `foo` DESC, ORDER BY `bar` ASC", parametrizedSql); } }
@Override protected String orderBySql() { String sql = ""; if (orderByFields != null && !orderByFields.isEmpty()) { sql += join(orderByFields.stream() .map(x -> " ORDER BY `" + x.getFieldName() + "` " + (x.isDescending() ? "DESC" : "ASC")) .collect(Collectors.toList()), ","); } return sql; } }
@Override public <T extends Storable> Collection<T> select(String namespace) { return executeQuery(namespace, new MySqlSelectQuery(namespace)); }
@Override protected String getParameterizedSql() { String sql = "SELECT * FROM " + tableName; //where clause is defined by columns specified in the PrimaryKey if (columns != null) { sql += " WHERE " + join(getColumnNames(columns, "`%s` = ?"), " AND "); } LOG.debug(sql); return sql; }
@Override protected String getParameterizedSql() { String sql = super.getParameterizedSql(); sql += " FOR UPDATE"; LOG.debug(sql); return sql; } }
@Override public <T extends Storable> Collection<T> select(String namespace) { return executeQuery(namespace, new MySqlSelectQuery(namespace)); }
@Override public <T extends Storable> Collection<T> select(String namespace, List<OrderByField> orderByFields) { return executeQuery(namespace, new MySqlSelectQuery(namespace, orderByFields)); }
@Override public <T extends Storable> Collection<T> select(StorableKey storableKey) { return executeQuery(storableKey.getNameSpace(), new MySqlSelectQuery(storableKey)); }
@Override public <T extends Storable> Collection<T> select(StorableKey storableKey) { return executeQuery(storableKey.getNameSpace(), new MySqlSelectQuery(storableKey)); }
@Override public <T extends Storable> Collection<T> select(StorableKey storableKey, List<OrderByField> orderByFields) { return executeQuery(storableKey.getNameSpace(), new MySqlSelectQuery(storableKey, orderByFields)); }
@Override public <T extends Storable> Collection<T> select(StorableKey storableKey, List<OrderByField> orderByFields) { return executeQuery(storableKey.getNameSpace(), new MySqlSelectQuery(storableKey, orderByFields)); }
@Override public <T extends Storable> Collection<T> select(SearchQuery searchQuery) { return executeQuery(searchQuery.getNameSpace(), new MySqlSelectQuery(searchQuery, storableFactory.create(searchQuery.getNameSpace()).getSchema())); }
@Override public <T extends Storable> Collection<T> select(SearchQuery searchQuery) { return executeQuery(searchQuery.getNameSpace(), new MySqlSelectQuery(searchQuery, storableFactory.create(searchQuery.getNameSpace()).getSchema())); }