@Override public Page<AddressLocationDetails> retrieveAllAddressLocations( final SearchSqlQuery searchAddresses) { try { context.authenticatedUser(); final AddressLocationMapper locationMapper = new AddressLocationMapper(); final StringBuilder sqlBuilder = new StringBuilder(200); sqlBuilder.append("select "); sqlBuilder.append(locationMapper.schema()); String sqlSearch = searchAddresses.getSqlSearch(); String extraCriteria = ""; if (sqlSearch != null) { sqlSearch = sqlSearch.trim(); extraCriteria = " where country_name like '%" + sqlSearch + "%' "; } sqlBuilder.append(extraCriteria); if (searchAddresses.isLimited()) { sqlBuilder.append(" limit ").append(searchAddresses.getLimit()); } if (searchAddresses.isOffset()) { sqlBuilder.append(" offset ").append(searchAddresses.getOffset()); } return this.paginationHelper.fetchPage( this.jdbcTemplate, "SELECT FOUND_ROWS()", sqlBuilder.toString(), new Object[] {}, locationMapper); } catch (final EmptyResultDataAccessException e) { return null; } }