Skip to main content

Liferay Dynamic Query API

Liferay Dynamic Query API 

-Liferay Dynamic Query API is an elegant feature in Liferay portlet development.
-Dynamic Query API can only perform read operations against database. These we will use specially to provide search operations against database.
-Dynamic Query API is independent feature and we can implement anywhere in the development like we can implement in JSP pages, Portlet Action Classes and service implementation classes.

Types of Class Loader-:

Here we have two class loaders
1. Portal Class Loader-:

   If any class or model class in portal level then we need to use Portal Class Loader in Dynamic Query Object.
   ClassLoader portalClassLoader=PortalClassLoaderUtil.getClassLoader();
   We can implement dynamic query against portal level class such as User, Group, Role, Organization, Layout and Layoutset

2. Portlet Classs Loader-:

   Portlet Class Loader is related to each portlet.
   ClassLoader portletClassLoader=PortletClassLoaderUtil.getClassLoader();

Create Criteria and Add criteria to Dynamic Query Object-:

Criteria represent the reading policies against table or database. We already know when we write the SQL query we will use different operators and condition.
To perform Criteria we use these two utility classes

1. RestrictionsFactoryUtil


   RestrictionsFactoryUtil is Util class contains WHERE condition operators like (AND, OR,   IN).When we want apply WHERE condition related operators then we will RestrictionsFactoryUtil


2. PropertyFactoryUtil

   PropertyFactoryUtil contained all possible operators against columns and PropertyFactoryUtil contains all methods which represent the columns related operators like =,>, <, in and like 

Creating Dynamic Query-:

Step1-:

DynamicQuery dynamicQuery = DynamicQueryFactoryUtil.forClass(ExpandoValue.class, PortalClassLoaderUtil.getClassLoader());

Step 2-: 

DynamicQuery innerQuery = DynamicQueryFactoryUtil.forClass(ExpandoValue.class, PortalClassLoaderUtil.getClassLoader());

Step 3-:

innerQuery.setProjection(ProjectionFactoryUtil.getProjectionFactory().property("classPK"));

//Projection is used to reproduce exact projected values

Step 4-:
Criterion criterion = null;

criterion = RestrictionsFactoryUtil.like("data", "MyData");
criterion = RestrictionsFactoryUtil.or(criterion , RestrictionsFactoryUtil.eq("data", "Country"));
criterion = RestrictionsFactoryUtil.or(criterion , RestrictionsFactoryUtil.eq("data", "State"));

Step 5-:

//adding criterion to DynamicQuery Object
innerQuery.add(criterion);

Step 6-:

dynamicQuery.add(PropertyFactoryUtil.forName("classPK").notIn(innerQuery));

dynamicQuery.add(PropertyFactoryUtil.forName("data").eq(String.valueOf(myContactId)));


Multiple methods of Projection, Restriction, Property Interfaces-:

Attachment






Comments

Popular posts from this blog

Liferay 7.1 Topics Coming Soon stay connected

1. Liferay 7.1 Service Builder 2. Rest Service and Liferay 3. Consuming SOAP service with Liferay 7.1 4. Creating Theme With Liferay 7.1 Using Liferay IDE Using NPM 5. Create Angular NPM Module 6. Web Content Management 7. OSGI Basic 8. Liferay 7.1 with more than 1 DB 9. A sample project 10. Liferay Dev Ops

How the portal page is loaded with respective portlets

How the portal page is loaded with respective portlets When a user requests a page with a URL, 1.    The browser sends the request to the Application Server (AS). 2.    Liferay gets the page name from the URL. 3.    It goes to the layout database table and finds the related        theme and page layout. 4.    Based on the page layout, Liferay finds the portlets added        into each area of the page layout. 5.    Liferay runs the portlet and adds the output in the        portlet.vm template. 6.    Liferay interprets the portlet.vm template and adds the output        in the page layout. 7.    Then Liferay interprets the page layout and adds the output in        the portal_normal.vm template. 8.    After that Liferay interprets the portal...

Liferay Custom Field and Custom Attribute (Using Liferay UI and Programatically)

Custom fields are a way to add attributes to many types of assets in the portal. Its basically help us to add additional fields to existed models or entities. Adding some more additional attributes to existed entities or models helps us so to meet our requirements. Liferay provide two way's to allow the creation of Custom Fields. 1. Using Liferay UI 2. Programatically Lets look these both topic one by one-: Suppose you have a scenario where its needed to add few fields in your User_ Table So its simple to add using Liferay UI just you need to follow these steps-: 1. Using Liferay UI-:   Goto-> Control-Panel -> Click on Custom Field A List will be displayed-: Now you can add your custom fields for any entity in the list. Click on User Entity and a page will be displayed like this-: Now add these value in respective fields-: KEY- myContactId Type- Select Integer After adding the custom field we can view, update from the Lifera...