Skip to content

Instantly share code, notes, and snippets.

@PhongGCS
Created September 29, 2023 03:12
Show Gist options
  • Save PhongGCS/1614b5f7dcb7baa0b780e99473d58e22 to your computer and use it in GitHub Desktop.
Save PhongGCS/1614b5f7dcb7baa0b780e99473d58e22 to your computer and use it in GitHub Desktop.
Entity Manager Spring boot
public Page<String> getSmsCampaignRecepientByCampaignId(SmsCampaignRecepientQueryRequest request, Pageable pageable) {
int pageNumber = pageable.getPageNumber();
int pageSize = pageable.getPageSize();
StringBuilder sql = new StringBuilder();
StringBuilder sqlCount = new StringBuilder();
sql.append("SELECT phone_number FROM sms_campaign_recepient WHERE sms_campaign_id = :smsCampaignId ");
// Check if isPhoneVN is specified in the request
if (request.getIsPhoneVN() != null) {
sql.append("AND is_phone_vn = :isPhoneVN ");
}
// Create a native SQL query
Query query = entityManager.createNativeQuery(sql.toString());
sqlCount.append("SELECT count(1) from ( " + sql + " ) as t");
Query queryCount = entityManager.createNativeQuery(sqlCount.toString());
query.setFirstResult(pageNumber * pageSize);
query.setMaxResults(pageSize);
// Set parameters for the query
query.setParameter("smsCampaignId", request.getSmsCampainId());
queryCount.setParameter("smsCampaignId", request.getSmsCampainId());
// Set isPhoneVN parameter if it is specified in the request
if (request.getIsPhoneVN() != null) {
query.setParameter("isPhoneVN", request.getIsPhoneVN());
queryCount.setParameter("isPhoneVN", request.getIsPhoneVN());
}
// Execute the query and retrieve the results as a list of String (phone numbers)
List<String> result = query.getResultList();
// Create a native SQL query count
BigInteger total = (BigInteger) queryCount.getSingleResult();
return new PageImpl<>(result, pageable, total.longValue());
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment