com.ymonnier.sql.help.service.QueryBuilder Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of ym-sql-helper Show documentation
Show all versions of ym-sql-helper Show documentation
A little abstraction of CRUD operations and
generator find function for model's attributs.
The newest version!
package com.ymonnier.sql.help.service;
import javax.persistence.Query;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* Project SqlHelper.
* Package com.ymonnier.sql.help.service.
* File ResultQuery.java.
* Created by Ysee on 15/03/2017 - 20:43.
* www.yseemonnier.com
* https://github.com/YMonnier
*/
public class QueryBuilder {
/**
* Parameters query.
*/
private Map parameters;
/**
* limitation of tuple number
*/
private int limit;
/**
* Current query created
* by the user (native sql, jpql, ...).
*/
private Query query;
public QueryBuilder(Query query) {
this.parameters = new HashMap<>();
this.limit = 0;
this.query = query;
}
/**
* Set a parameter to the current query.
*
* @param name key value parameter
* @param value value parameter
* @return `QueryBuilder` object
*/
public QueryBuilder where(String name, Object value) {
this.parameters.put(name, value);
return this;
}
/**
* Set a parameter to the current query.
*
* @param name key value parameter
* @param value value parameter
* @return `QueryBuilder` object
*/
public QueryBuilder and(String name, Object value) {
this.parameters.put(name, value);
return this;
}
/**
* Set the limitation of tuple number
*
* @param limit max tuple number
* @return `QueryBuilder` object
*/
public QueryBuilder limit(int limit) {
this.limit = limit;
return this;
}
/**
* Return a list of generic object.
*
* @return list of generic object.
*/
public List list() {
apply();
return query.getResultList();
}
/**
* Return a single object.
*
* @return Single generic object.
*/
public T first() {
apply();
return (T) query.getSingleResult();
}
/**
* Apply all query settings
* like the limitation of tuple number
* and parameters
*/
private void apply() {
Set> rawParameters = parameters.entrySet();
if (limit > 0)
query.setMaxResults(limit);
for (Map.Entry entry : rawParameters) {
query.setParameter(entry.getKey(), entry.getValue());
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy