Advertisement
Guest User

Untitled

a guest
Oct 31st, 2020
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.33 KB | None | 0 0
  1. package com.beetlehand.model.dao;
  2.  
  3. import com.beetlehand.model.AttributeEntity;
  4. import org.apache.commons.lang3.StringUtils;
  5.  
  6. import javax.persistence.*;
  7. import java.util.ArrayList;
  8. import java.util.List;
  9. import java.util.Map;
  10.  
  11. public class AttributeDao extends AbstractDao<AttributeEntity, Integer> {
  12.  
  13.     public AttributeEntity getById(Integer id) {
  14.         if(id == null) return null;
  15.         return getEntityManager().find(AttributeEntity.class, id);
  16.     }
  17.  
  18.     public AttributeEntity getOneBy(Map<String, Object> params) {
  19.         List<String> whereClause = new ArrayList<>();
  20.         for(String key :params.keySet()) {
  21.             whereClause.add(" " + key + " =:" + key + " ");
  22.         }
  23.  
  24.         StringBuilder queryBuilder = new StringBuilder();
  25.         queryBuilder.append("SELECT a FROM AttributeEntity a");
  26.         queryBuilder.append(" WHERE " + StringUtils.join(whereClause.toArray(), " AND "));
  27.  
  28.         TypedQuery<AttributeEntity> jpaQuery =
  29.                 getEntityManager().createQuery(queryBuilder.toString(), AttributeEntity.class);
  30.         for(String key :params.keySet()) {
  31.             jpaQuery.setParameter(key, params.get(key));
  32.         }
  33.  
  34.         return jpaQuery.getSingleResult();
  35.     }
  36.  
  37.     public List<AttributeEntity> getBy(String predicates, Map<String, Object> params) {
  38.         return this.getBy(predicates, params, "attribute_id", 1000, 0);
  39.     }
  40.  
  41.     public List<AttributeEntity> getBy(String predicates, Map<String, Object> params, String orderBy) {
  42.         return this.getBy(predicates, params, orderBy, 1000, 0);
  43.     }
  44.  
  45.     public List<AttributeEntity> getBy(String predicates, Map<String, Object> params, String orderBy
  46.             , Integer limit) {
  47.         return this.getBy(predicates, params, orderBy, limit, 0);
  48.     }
  49.  
  50.     public List<AttributeEntity> getBy(String predicates, Map<String, Object> params, String orderBy
  51.             , Integer limit, Integer offset) {
  52.         StringBuilder queryBuilder = new StringBuilder();
  53.         queryBuilder.append("SELECT a FROM AttributeEntity a");
  54.         queryBuilder.append(" WHERE " + predicates);
  55.  
  56.         if(orderBy != null)
  57.             queryBuilder.append(" ORDER BY " + orderBy);
  58.  
  59.         TypedQuery<AttributeEntity> jpaQuery =
  60.                 getEntityManager().createQuery(queryBuilder.toString(), AttributeEntity.class);
  61.  
  62.         if(limit != null)
  63.             jpaQuery.setMaxResults(limit);
  64.  
  65.         if(offset != null)
  66.             jpaQuery.setFirstResult(offset);
  67.  
  68.         for(String key :params.keySet()) {
  69.             jpaQuery.setParameter(key, params.get(key));
  70.         }
  71.  
  72.         return jpaQuery.getResultList();
  73.     }
  74.  
  75.     public Long count() {
  76.         return this.countBy(null, null);
  77.     }
  78.  
  79.     public Long countBy(String predicates, Map<String, Object> params) {
  80.         StringBuilder queryBuilder = new StringBuilder();
  81.         queryBuilder.append("SELECT COUNT(a) FROM AttributeEntity a");
  82.  
  83.         if(predicates != null)
  84.             queryBuilder.append(" WHERE " + predicates);
  85.  
  86.         TypedQuery<Long> jpaQuery =
  87.                 getEntityManager().createQuery(queryBuilder.toString(), Long.class);
  88.         if(params != null)
  89.             for (String key : params.keySet()) {
  90.                 jpaQuery.setParameter(key, params.get(key));
  91.             }
  92.  
  93.         return jpaQuery.getSingleResult().longValue();
  94.     }
  95. }
  96.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement