Search in sources :

Example 11 with Table

use of org.springframework.data.relational.core.sql.Table in project spring-data-jdbc by spring-projects.

the class JdbcQueryCreator method complete.

/**
 * Creates {@link ParametrizedQuery} applying the given {@link Criteria} and {@link Sort} definition.
 *
 * @param criteria {@link Criteria} to be applied to query
 * @param sort sort option to be applied to query, must not be {@literal null}.
 * @return instance of {@link ParametrizedQuery}
 */
@Override
protected ParametrizedQuery complete(@Nullable Criteria criteria, Sort sort) {
    RelationalPersistentEntity<?> entity = entityMetadata.getTableEntity();
    Table table = Table.create(entityMetadata.getTableName());
    MapSqlParameterSource parameterSource = new MapSqlParameterSource();
    SelectBuilder.SelectLimitOffset limitOffsetBuilder = createSelectClause(entity, table);
    SelectBuilder.SelectWhere whereBuilder = applyLimitAndOffset(limitOffsetBuilder);
    SelectBuilder.SelectOrdered selectOrderBuilder = applyCriteria(criteria, entity, table, parameterSource, whereBuilder);
    selectOrderBuilder = applyOrderBy(sort, entity, table, selectOrderBuilder);
    SelectBuilder.BuildSelect completedBuildSelect = selectOrderBuilder;
    if (this.lockMode.isPresent()) {
        completedBuildSelect = selectOrderBuilder.lock(this.lockMode.get().value());
    }
    Select select = completedBuildSelect.build();
    String sql = SqlRenderer.create(renderContextFactory.createRenderContext()).render(select);
    return new ParametrizedQuery(sql, parameterSource);
}
Also used : Table(org.springframework.data.relational.core.sql.Table) MapSqlParameterSource(org.springframework.jdbc.core.namedparam.MapSqlParameterSource) Select(org.springframework.data.relational.core.sql.Select) SelectBuilder(org.springframework.data.relational.core.sql.SelectBuilder)

Example 12 with Table

use of org.springframework.data.relational.core.sql.Table in project spring-data-jdbc by spring-projects.

the class MySqlDialectRenderingUnitTests method shouldRenderSelectWithLockRead.

// DATAJDBC-498
@Test
public void shouldRenderSelectWithLockRead() {
    Table table = Table.create("foo");
    LockMode lockMode = LockMode.PESSIMISTIC_READ;
    Select select = StatementBuilder.select(table.asterisk()).from(table).lock(lockMode).build();
    String sql = SqlRenderer.create(factory.createRenderContext()).render(select);
    assertThat(sql).isEqualTo("SELECT foo.* FROM foo LOCK IN SHARE MODE");
}
Also used : Table(org.springframework.data.relational.core.sql.Table) Select(org.springframework.data.relational.core.sql.Select) LockMode(org.springframework.data.relational.core.sql.LockMode) Test(org.junit.jupiter.api.Test)

Example 13 with Table

use of org.springframework.data.relational.core.sql.Table in project spring-data-jdbc by spring-projects.

the class MySqlDialectRenderingUnitTests method shouldRenderSelectWithLimitOffset.

// DATAJDBC-278
@Test
public void shouldRenderSelectWithLimitOffset() {
    Table table = Table.create("foo");
    Select select = StatementBuilder.select(table.asterisk()).from(table).limit(10).offset(20).build();
    String sql = SqlRenderer.create(factory.createRenderContext()).render(select);
    assertThat(sql).isEqualTo("SELECT foo.* FROM foo LIMIT 20, 10");
}
Also used : Table(org.springframework.data.relational.core.sql.Table) Select(org.springframework.data.relational.core.sql.Select) Test(org.junit.jupiter.api.Test)

Example 14 with Table

use of org.springframework.data.relational.core.sql.Table in project spring-data-jdbc by spring-projects.

the class PostgresDialectRenderingUnitTests method shouldRenderSelectWithLockWrite.

// DATAJDBC-498
@Test
public void shouldRenderSelectWithLockWrite() {
    Table table = Table.create("foo");
    LockMode lockMode = LockMode.PESSIMISTIC_WRITE;
    Select select = StatementBuilder.select(table.asterisk()).from(table).lock(lockMode).build();
    String sql = SqlRenderer.create(factory.createRenderContext()).render(select);
    assertThat(sql).isEqualTo("SELECT foo.* FROM foo FOR UPDATE OF foo");
}
Also used : Table(org.springframework.data.relational.core.sql.Table) Select(org.springframework.data.relational.core.sql.Select) LockMode(org.springframework.data.relational.core.sql.LockMode) Test(org.junit.jupiter.api.Test)

Example 15 with Table

use of org.springframework.data.relational.core.sql.Table in project spring-data-jdbc by spring-projects.

the class PostgresDialectRenderingUnitTests method shouldRenderSelectWithLockRead.

// DATAJDBC-498
@Test
public void shouldRenderSelectWithLockRead() {
    Table table = Table.create("foo");
    LockMode lockMode = LockMode.PESSIMISTIC_READ;
    Select select = StatementBuilder.select(table.asterisk()).from(table).lock(lockMode).build();
    String sql = SqlRenderer.create(factory.createRenderContext()).render(select);
    assertThat(sql).isEqualTo("SELECT foo.* FROM foo FOR SHARE OF foo");
}
Also used : Table(org.springframework.data.relational.core.sql.Table) Select(org.springframework.data.relational.core.sql.Select) LockMode(org.springframework.data.relational.core.sql.LockMode) Test(org.junit.jupiter.api.Test)

Aggregations

Table (org.springframework.data.relational.core.sql.Table)59 Test (org.junit.jupiter.api.Test)53 Select (org.springframework.data.relational.core.sql.Select)40 LockMode (org.springframework.data.relational.core.sql.LockMode)14 Column (org.springframework.data.relational.core.sql.Column)9 Expression (org.springframework.data.relational.core.sql.Expression)4 Insert (org.springframework.data.relational.core.sql.Insert)4 Update (org.springframework.data.relational.core.sql.Update)4 Delete (org.springframework.data.relational.core.sql.Delete)3 SqlIdentifier (org.springframework.data.relational.core.sql.SqlIdentifier)2 PersistentPropertyPathExtension (org.springframework.data.relational.core.mapping.PersistentPropertyPathExtension)1 Aliased (org.springframework.data.relational.core.sql.Aliased)1 InlineQuery (org.springframework.data.relational.core.sql.InlineQuery)1 SelectBuilder (org.springframework.data.relational.core.sql.SelectBuilder)1 TestFrom (org.springframework.data.relational.core.sql.TestFrom)1 TestJoin (org.springframework.data.relational.core.sql.TestJoin)1 MapSqlParameterSource (org.springframework.jdbc.core.namedparam.MapSqlParameterSource)1 Nullable (org.springframework.lang.Nullable)1