diff --git a/README.md b/README.md index a0465f2..1a29750 100644 --- a/README.md +++ b/README.md @@ -293,6 +293,16 @@ how it works: firstTable, DynamicTableModel.class); ``` + - limit and offset +```java + ormQueryFactory.selectCache().findOne(ormQueryFactory + .buildQuery() + .from(firstTable).limit(3).offset(3) + .where(firstTable.getNumberColumnByName("newColumn").eq(122)), + firstTable, + DynamicTableModel.class); +``` + - get column value from model ```java String testStringColumnValue = firstTableFromDatabase.getValue("TestStringColumn", String.class); diff --git a/dynamic-orm-core/src/main/java/com/github/vzakharchenko/dynamic/orm/core/predicate/PredicateFactory.java b/dynamic-orm-core/src/main/java/com/github/vzakharchenko/dynamic/orm/core/predicate/PredicateFactory.java index 9cf7596..f1735b0 100644 --- a/dynamic-orm-core/src/main/java/com/github/vzakharchenko/dynamic/orm/core/predicate/PredicateFactory.java +++ b/dynamic-orm-core/src/main/java/com/github/vzakharchenko/dynamic/orm/core/predicate/PredicateFactory.java @@ -1,11 +1,11 @@ package com.github.vzakharchenko.dynamic.orm.core.predicate; -import com.querydsl.core.types.*; +import com.querydsl.core.types.Expression; +import com.querydsl.core.types.Ops; +import com.querydsl.core.types.Predicate; import com.querydsl.core.types.dsl.BooleanExpression; import com.querydsl.core.types.dsl.Expressions; -import java.util.Objects; - /** * Created with IntelliJ IDEA. * User: vassio diff --git a/dynamic-orm-core/src/test/java/com/github/vzakharchenko/dynamic/orm/core/CrudTest.java b/dynamic-orm-core/src/test/java/com/github/vzakharchenko/dynamic/orm/core/CrudTest.java index 3aedd66..2fc210d 100644 --- a/dynamic-orm-core/src/test/java/com/github/vzakharchenko/dynamic/orm/core/CrudTest.java +++ b/dynamic-orm-core/src/test/java/com/github/vzakharchenko/dynamic/orm/core/CrudTest.java @@ -133,4 +133,30 @@ public void testUpdatePartWhereWithoutPrimaryKey() { assertEquals(tableModel2.getValue("TestColumn", String.class), "newValue"); } + + @Test + public void testDeleteWithoutPrimaryKey() { + + qDynamicTableFactory.buildTables("DynamicTable2") + .addColumns() + .addDateTimeColumn("modificationTime").notNull().create() + .addStringColumn("TestColumn").size(255).create() + .finish() + .addVersionColumn("modificationTime") + .finish() + .buildSchema(); + + QDynamicTable dynamicTable = qDynamicTableFactory.getQDynamicTableByName("DynamicTable2"); + DynamicTableModel dynamicTableModel = new DynamicTableModel(dynamicTable); + dynamicTableModel.addColumnValue("TestColumn", "testData"); + ormQueryFactory.insert(dynamicTableModel); + ormQueryFactory.modify(dynamicTable, DynamicTableModel.class) + .delete(dynamicTableModel).delete(); + + DynamicTableModel tableModel2 = ormQueryFactory.select().findOne(ormQueryFactory.buildQuery(), dynamicTable, DynamicTableModel.class); + assertNull(tableModel2); + } + + + } diff --git a/dynamic-orm-core/src/test/java/com/github/vzakharchenko/dynamic/orm/core/SelectTest.java b/dynamic-orm-core/src/test/java/com/github/vzakharchenko/dynamic/orm/core/SelectTest.java index 94ba986..5556050 100644 --- a/dynamic-orm-core/src/test/java/com/github/vzakharchenko/dynamic/orm/core/SelectTest.java +++ b/dynamic-orm-core/src/test/java/com/github/vzakharchenko/dynamic/orm/core/SelectTest.java @@ -4,6 +4,7 @@ import com.github.vzakharchenko.dynamic.orm.core.dynamic.QDynamicTable; import com.github.vzakharchenko.dynamic.orm.core.dynamic.dml.DynamicTableModel; import com.github.vzakharchenko.dynamic.orm.core.pk.PrimaryKeyGenerators; +import com.github.vzakharchenko.dynamic.orm.core.predicate.PredicateFactory; import com.github.vzakharchenko.dynamic.orm.model.TestTableVersionAnnotation; import com.github.vzakharchenko.dynamic.orm.qModel.QTestTableVersionAnnotation; import org.testng.annotations.BeforeMethod; @@ -72,10 +73,15 @@ public void limitOffsetTest() { TestTableVersionAnnotation value5 = new TestTableVersionAnnotation(); ormQueryFactory.insert(value1, value2, value3, value4, value5); - List limit = ormQueryFactory.select().findAll(ormQueryFactory.buildQuery().limit(3), TestTableVersionAnnotation.class); - assertEquals(limit.size(), 3); + List limit = ormQueryFactory.select() + .findAll(ormQueryFactory.buildQuery().limit(3), + TestTableVersionAnnotation.class); + + List offset = ormQueryFactory.select() + .findAll(ormQueryFactory.buildQuery().limit(3).offset(3), + TestTableVersionAnnotation.class); - List offset = ormQueryFactory.select().findAll(ormQueryFactory.buildQuery().limit(3).offset(3), TestTableVersionAnnotation.class); + assertEquals(limit.size(), 3); assertEquals(offset.size(), 2); @@ -88,6 +94,39 @@ private DynamicTableModel createDynamicModel(String testColumn) { return dynamicTableModel; } + @Test + public void alwaysFalseQuery() { + QDynamicTable dynamicTable = qDynamicTableFactory.getQDynamicTableByName("DynamicTable"); + DynamicTableModel value1 = createDynamicModel("1"); + DynamicTableModel value2 = createDynamicModel("2"); + DynamicTableModel value3 = createDynamicModel("3"); + DynamicTableModel value4 = createDynamicModel("4"); + DynamicTableModel value5 = createDynamicModel("5"); + PredicateFactory.alwaysFalsePredicate(); + + assertTrue(ormQueryFactory.select().notExist(ormQueryFactory + .buildQuery() + .from(dynamicTable) + .where(PredicateFactory.alwaysFalsePredicate()))); + + } + @Test + public void wrapWhere() { + QDynamicTable dynamicTable = qDynamicTableFactory.getQDynamicTableByName("DynamicTable"); + DynamicTableModel value1 = createDynamicModel("1"); + DynamicTableModel value2 = createDynamicModel("2"); + DynamicTableModel value3 = createDynamicModel("3"); + DynamicTableModel value4 = createDynamicModel("4"); + DynamicTableModel value5 = createDynamicModel("5"); + PredicateFactory.alwaysFalsePredicate(); + + assertTrue(ormQueryFactory.select().notExist(ormQueryFactory + .buildQuery() + .from(dynamicTable) + .where(PredicateFactory + .wrapPredicate(PredicateFactory.alwaysFalsePredicate().and(dynamicTable.getStringColumnByName("TestColumn").isNotNull()))))); + + } @Test public void limitOffsetDynamicTest() { @@ -105,7 +144,7 @@ public void limitOffsetDynamicTest() { List offset = ormQueryFactory.select().findAll(ormQueryFactory.buildQuery().limit(3).offset(3), dynamicTable, DynamicTableModel.class); assertEquals(offset.size(), 2); + } - } }