Class CosmosTemplate
java.lang.Object
com.azure.spring.data.cosmos.core.CosmosTemplate
- All Implemented Interfaces:
CosmosOperations
,org.springframework.beans.factory.Aware
,org.springframework.context.ApplicationContextAware
public class CosmosTemplate
extends Object
implements CosmosOperations, org.springframework.context.ApplicationContextAware
Template class for cosmos db
-
Constructor Summary
ConstructorDescriptionCosmosTemplate
(CosmosAsyncClient client, String databaseName, CosmosConfig cosmosConfig, MappingCosmosConverter mappingCosmosConverter) InitializationCosmosTemplate
(CosmosAsyncClient client, String databaseName, CosmosConfig cosmosConfig, MappingCosmosConverter mappingCosmosConverter, org.springframework.data.auditing.IsNewAwareAuditingHandler cosmosAuditingHandler) InitializationCosmosTemplate
(CosmosFactory cosmosFactory, CosmosConfig cosmosConfig, MappingCosmosConverter mappingCosmosConverter) InitializationCosmosTemplate
(CosmosFactory cosmosFactory, CosmosConfig cosmosConfig, MappingCosmosConverter mappingCosmosConverter, org.springframework.data.auditing.IsNewAwareAuditingHandler cosmosAuditingHandler) Initialization -
Method Summary
Modifier and TypeMethodDescription<T> long
count
(SqlQuerySpec querySpec, String containerName) Count<T> long
count
(CosmosQuery query, String containerName) Countlong
CountcreateContainerIfNotExists
(CosmosEntityInformation<?, ?> information) Creates container if not exists<T> Iterable<T>
delete
(CosmosQuery query, Class<T> domainType, String containerName) Delete the DocumentQuery, need to query the domains at first, then delete the item from the result.void
Delete the DocumentQuery, delete all the items in the given container.void
deleteById
(String containerName, Object id, PartitionKey partitionKey) Deletes the item by id and partition key.void
deleteContainer
(String containerName) Delete container<T> void
deleteEntity
(String containerName, T entity) Deletes the entity<T> Boolean
exists
(CosmosQuery query, Class<T> domainType, String containerName) Checks if document query items exist<T> Iterable<T>
find
(CosmosQuery query, Class<T> domainType, String containerName) Finds the document query items<T> Iterable<T>
findAll
(PartitionKey partitionKey, Class<T> domainType) Find the DocumentQuery, find all the items specified by domain type in the given container.<T> Iterable<T>
Find the DocumentQuery, find all the items specified by domain type.<T> Iterable<T>
Find the DocumentQuery, find all the items specified by domain type in the given container.<T> org.springframework.data.domain.Page<T>
findAll
(org.springframework.data.domain.Pageable pageable, Class<T> domainType, String containerName) Find all items in a given container with partition key<T> T
Finds item by id<T> T
findById
(Object id, Class<T> domainType, PartitionKey partitionKey) Finds item by id<T> T
Finds item by id<T,
ID> Iterable<T> Find by idsgetContainerName
(Class<?> domainType) To get container name by domainTypegetContainerProperties
(String containerName) Get properties for specified containerTo get converter<T> T
Inserts item into the given container<T> T
insert
(String containerName, T objectToSave, PartitionKey partitionKey) Inserts item into the given container<T> T
insert
(T objectToSave, PartitionKey partitionKey) Inserts item<T> org.springframework.data.domain.Page<T>
paginationQuery
(CosmosQuery query, Class<T> domainType, String containerName) Pagination queryreplaceContainerProperties
(String containerName, CosmosContainerProperties properties) Replace container properties for the specified container<T> org.springframework.data.domain.Page<T>
runPaginationQuery
(SqlQuerySpec querySpec, org.springframework.data.domain.Pageable pageable, Class<?> domainType, Class<T> returnType) Run the query.<T> Iterable<T>
runQuery
(SqlQuerySpec querySpec, Class<?> domainType, Class<T> returnType) Run the query.<T> Iterable<T>
runQuery
(SqlQuerySpec querySpec, org.springframework.data.domain.Sort sort, Class<?> domainType, Class<T> returnType) Run the query.<T> org.springframework.data.domain.Slice<T>
runSliceQuery
(SqlQuerySpec querySpec, org.springframework.data.domain.Pageable pageable, Class<?> domainType, Class<T> returnType) Run custom SQL queryvoid
setApplicationContext
(org.springframework.context.ApplicationContext applicationContext) Sets the application context<T> org.springframework.data.domain.Slice<T>
sliceQuery
(CosmosQuery query, Class<T> domainType, String containerName) Slice query<T> void
Upserts an item into container with partition key<T> void
upsert
(T object) Upserts an item with partition key<T> T
upsertAndReturnEntity
(String containerName, T object) Upserts an item and return item properties
-
Constructor Details
-
CosmosTemplate
public CosmosTemplate(CosmosAsyncClient client, String databaseName, CosmosConfig cosmosConfig, MappingCosmosConverter mappingCosmosConverter, org.springframework.data.auditing.IsNewAwareAuditingHandler cosmosAuditingHandler) Initialization- Parameters:
client
- must not be nulldatabaseName
- must not be nullcosmosConfig
- must not be nullmappingCosmosConverter
- must not be nullcosmosAuditingHandler
- can be null
-
CosmosTemplate
public CosmosTemplate(CosmosAsyncClient client, String databaseName, CosmosConfig cosmosConfig, MappingCosmosConverter mappingCosmosConverter) Initialization- Parameters:
client
- must not be nulldatabaseName
- must not be nullcosmosConfig
- must not be nullmappingCosmosConverter
- must not be null
-
CosmosTemplate
public CosmosTemplate(CosmosFactory cosmosFactory, CosmosConfig cosmosConfig, MappingCosmosConverter mappingCosmosConverter, org.springframework.data.auditing.IsNewAwareAuditingHandler cosmosAuditingHandler) Initialization- Parameters:
cosmosFactory
- must not be nullcosmosConfig
- must not be nullmappingCosmosConverter
- must not be nullcosmosAuditingHandler
- can be null
-
CosmosTemplate
public CosmosTemplate(CosmosFactory cosmosFactory, CosmosConfig cosmosConfig, MappingCosmosConverter mappingCosmosConverter) Initialization- Parameters:
cosmosFactory
- must not be nullcosmosConfig
- must not be nullmappingCosmosConverter
- must not be null
-
-
Method Details
-
setApplicationContext
public void setApplicationContext(org.springframework.context.ApplicationContext applicationContext) throws org.springframework.beans.BeansException Sets the application context- Specified by:
setApplicationContext
in interfaceorg.springframework.context.ApplicationContextAware
- Parameters:
applicationContext
- must not be null- Throws:
org.springframework.beans.BeansException
- the bean exception
-
insert
Inserts item- Specified by:
insert
in interfaceCosmosOperations
- Type Parameters:
T
- type class of domain type- Parameters:
objectToSave
- must not be nullpartitionKey
- must not be null- Returns:
- the inserted item
-
insert
Inserts item into the given container- Specified by:
insert
in interfaceCosmosOperations
- Type Parameters:
T
- type class of domain type- Parameters:
containerName
- must not be nullobjectToSave
- must not be null- Returns:
- the inserted item
-
insert
Inserts item into the given container- Specified by:
insert
in interfaceCosmosOperations
- Type Parameters:
T
- type class of domain type- Parameters:
containerName
- must not be nullobjectToSave
- must not be nullpartitionKey
- must not be null- Returns:
- the inserted item
-
findById
Finds item by id- Specified by:
findById
in interfaceCosmosOperations
- Type Parameters:
T
- type class of domain type- Parameters:
id
- must not be nulldomainType
- must not be null- Returns:
- found item
-
findById
Description copied from interface:CosmosOperations
Finds item by id- Specified by:
findById
in interfaceCosmosOperations
- Type Parameters:
T
- type class of domain type- Parameters:
id
- must not be nulldomainType
- must not be nullpartitionKey
- must not be null- Returns:
- found item
-
findById
Finds item by id- Specified by:
findById
in interfaceCosmosOperations
- Type Parameters:
T
- type class of domain type- Parameters:
containerName
- must not be nullid
- must not be nulldomainType
- must not be null- Returns:
- found item
-
upsert
public <T> void upsert(T object) Upserts an item with partition key- Specified by:
upsert
in interfaceCosmosOperations
- Type Parameters:
T
- type of upsert object- Parameters:
object
- upsert object
-
upsert
Upserts an item into container with partition key- Specified by:
upsert
in interfaceCosmosOperations
- Type Parameters:
T
- type of upsert object- Parameters:
containerName
- the container nameobject
- upsert object
-
upsertAndReturnEntity
Upserts an item and return item properties- Specified by:
upsertAndReturnEntity
in interfaceCosmosOperations
- Type Parameters:
T
- type of upsert object- Parameters:
containerName
- the container nameobject
- upsert object- Returns:
- upsert object entity
-
findAll
Find the DocumentQuery, find all the items specified by domain type.- Specified by:
findAll
in interfaceCosmosOperations
- Type Parameters:
T
- class type of domain- Parameters:
domainType
- the domain type- Returns:
- found results in a List
-
findAll
Find the DocumentQuery, find all the items specified by domain type in the given container.- Specified by:
findAll
in interfaceCosmosOperations
- Type Parameters:
T
- class type of domain- Parameters:
containerName
- the container namedomainType
- the domain type- Returns:
- found results in a List
-
findAll
Description copied from interface:CosmosOperations
Find the DocumentQuery, find all the items specified by domain type in the given container.- Specified by:
findAll
in interfaceCosmosOperations
- Type Parameters:
T
- class type of domain- Parameters:
partitionKey
- the partition keydomainType
- the domain type- Returns:
- results in an Iterable
-
deleteAll
Delete the DocumentQuery, delete all the items in the given container.- Specified by:
deleteAll
in interfaceCosmosOperations
- Parameters:
containerName
- Container name of databasedomainType
- the domain type
-
deleteContainer
Description copied from interface:CosmosOperations
Delete container- Specified by:
deleteContainer
in interfaceCosmosOperations
- Parameters:
containerName
- the container name
-
getContainerName
Description copied from interface:CosmosOperations
To get container name by domainType- Specified by:
getContainerName
in interfaceCosmosOperations
- Parameters:
domainType
- class type- Returns:
- String
-
createContainerIfNotExists
public CosmosContainerProperties createContainerIfNotExists(CosmosEntityInformation<?, ?> information) Description copied from interface:CosmosOperations
Creates container if not exists- Specified by:
createContainerIfNotExists
in interfaceCosmosOperations
- Parameters:
information
- CosmosEntityInformation- Returns:
- CosmosContainerProperties
-
getContainerProperties
Description copied from interface:CosmosOperations
Get properties for specified container- Specified by:
getContainerProperties
in interfaceCosmosOperations
- Parameters:
containerName
- String- Returns:
- CosmosContainerProperties
-
replaceContainerProperties
public CosmosContainerProperties replaceContainerProperties(String containerName, CosmosContainerProperties properties) Description copied from interface:CosmosOperations
Replace container properties for the specified container- Specified by:
replaceContainerProperties
in interfaceCosmosOperations
- Parameters:
containerName
- Stringproperties
- CosmosContainerProperties- Returns:
- CosmosContainerProperties
-
deleteById
Deletes the item by id and partition key.- Specified by:
deleteById
in interfaceCosmosOperations
- Parameters:
containerName
- Container name of databaseid
- item idpartitionKey
- the partition key
-
deleteEntity
Deletes the entity- Specified by:
deleteEntity
in interfaceCosmosOperations
- Type Parameters:
T
- type class of domain type- Parameters:
containerName
- the container nameentity
- the entity object
-
findByIds
Description copied from interface:CosmosOperations
Find by ids- Specified by:
findByIds
in interfaceCosmosOperations
- Type Parameters:
T
- type of domainTypeID
- type of ID- Parameters:
ids
- iterable of idsdomainType
- type classcontainerName
- the container name- Returns:
- results in an Iterable
-
find
public <T> Iterable<T> find(@NonNull CosmosQuery query, @NonNull Class<T> domainType, String containerName) Finds the document query items- Specified by:
find
in interfaceCosmosOperations
- Type Parameters:
T
- class of domainType- Parameters:
query
- The representation for query method.domainType
- Class of domaincontainerName
- Container name of database- Returns:
- All the found items as List.
-
exists
public <T> Boolean exists(@NonNull CosmosQuery query, @NonNull Class<T> domainType, String containerName) Checks if document query items exist- Specified by:
exists
in interfaceCosmosOperations
- Type Parameters:
T
- class of domainType- Parameters:
query
- The representation for query method.domainType
- Class of domaincontainerName
- Container name of database- Returns:
- if items exist
-
delete
public <T> Iterable<T> delete(@NonNull CosmosQuery query, @NonNull Class<T> domainType, @NonNull String containerName) Delete the DocumentQuery, need to query the domains at first, then delete the item from the result. The cosmos db Sql API do _NOT_ support DELETE query, we cannot add one DeleteQueryGenerator.- Specified by:
delete
in interfaceCosmosOperations
- Type Parameters:
T
- class of domainType- Parameters:
query
- The representation for query method.domainType
- Class of domaincontainerName
- Container name of database- Returns:
- All the deleted items as List.
-
findAll
public <T> org.springframework.data.domain.Page<T> findAll(org.springframework.data.domain.Pageable pageable, Class<T> domainType, String containerName) Description copied from interface:CosmosOperations
Find all items in a given container with partition key- Specified by:
findAll
in interfaceCosmosOperations
- Type Parameters:
T
- type of domainType- Parameters:
pageable
- Pageable objectdomainType
- the domainTypecontainerName
- the container name- Returns:
- results as Page
-
runPaginationQuery
public <T> org.springframework.data.domain.Page<T> runPaginationQuery(SqlQuerySpec querySpec, org.springframework.data.domain.Pageable pageable, Class<?> domainType, Class<T> returnType) Description copied from interface:CosmosOperations
Run the query.- Specified by:
runPaginationQuery
in interfaceCosmosOperations
- Type Parameters:
T
- the type parameter- Parameters:
querySpec
- the query specpageable
- the pageabledomainType
- the domain typereturnType
- the return type- Returns:
- the Page
-
paginationQuery
public <T> org.springframework.data.domain.Page<T> paginationQuery(CosmosQuery query, Class<T> domainType, String containerName) Description copied from interface:CosmosOperations
Pagination query- Specified by:
paginationQuery
in interfaceCosmosOperations
- Type Parameters:
T
- type class of domainType- Parameters:
query
- the document querydomainType
- type classcontainerName
- the container name- Returns:
- results as Page
-
sliceQuery
public <T> org.springframework.data.domain.Slice<T> sliceQuery(CosmosQuery query, Class<T> domainType, String containerName) Description copied from interface:CosmosOperations
Slice query- Specified by:
sliceQuery
in interfaceCosmosOperations
- Type Parameters:
T
- type class of domainType- Parameters:
query
- the document querydomainType
- type classcontainerName
- the container name- Returns:
- results as Slice
-
runSliceQuery
public <T> org.springframework.data.domain.Slice<T> runSliceQuery(SqlQuerySpec querySpec, org.springframework.data.domain.Pageable pageable, Class<?> domainType, Class<T> returnType) Description copied from interface:CosmosOperations
Run custom SQL query- Specified by:
runSliceQuery
in interfaceCosmosOperations
- Type Parameters:
T
- the type parameter- Parameters:
querySpec
- the query specpageable
- the pageabledomainType
- the domain typereturnType
- the return type- Returns:
- the Page
-
count
Description copied from interface:CosmosOperations
Count- Specified by:
count
in interfaceCosmosOperations
- Parameters:
containerName
- the container name- Returns:
- count result
-
count
Description copied from interface:CosmosOperations
Count- Specified by:
count
in interfaceCosmosOperations
- Type Parameters:
T
- type class of domainType- Parameters:
query
- the document querycontainerName
- the container name- Returns:
- count result
-
count
Description copied from interface:CosmosOperations
Count- Specified by:
count
in interfaceCosmosOperations
- Type Parameters:
T
- type class of domainType- Parameters:
querySpec
- the document query speccontainerName
- the container name- Returns:
- count result
-
getConverter
Description copied from interface:CosmosOperations
To get converter- Specified by:
getConverter
in interfaceCosmosOperations
- Returns:
- MappingCosmosConverter
-
runQuery
Description copied from interface:CosmosOperations
Run the query.- Specified by:
runQuery
in interfaceCosmosOperations
- Type Parameters:
T
- the type parameter- Parameters:
querySpec
- the query specdomainType
- the domain typereturnType
- the return type- Returns:
- the Iterable
-
runQuery
public <T> Iterable<T> runQuery(SqlQuerySpec querySpec, org.springframework.data.domain.Sort sort, Class<?> domainType, Class<T> returnType) Description copied from interface:CosmosOperations
Run the query.- Specified by:
runQuery
in interfaceCosmosOperations
- Type Parameters:
T
- the type parameter- Parameters:
querySpec
- the query specsort
- the sort orderdomainType
- the domain typereturnType
- the return type- Returns:
- the Iterable
-