public static List<User> find( Long id, String name, String screenName, Long uid, String accessToken, int begin, int max) { if (max <= 0) { max = 50; } if (begin <= 1) { begin = 1; } MorphiaQuery query = createQuery(); query.offset((begin - 1) * max); query.limit(max); if (id != null && id > 0) { query.field("_id").equal(id); } if (!StringUtils.isEmpty(name)) { if (!StringUtils.contains(name, "*")) { query.field("name").contains(StringUtils.remove(name, "*")); } else { query.field("name").equal(name); } } if (!StringUtils.isEmpty(screenName)) { if (!StringUtils.contains(screenName, "*")) { query.field("screenName").contains(StringUtils.remove(screenName, "*")); } else { query.field("screenName").equal(screenName); } } if (uid != null && uid > 0) { query.field("uid").equal(uid); } if (!StringUtils.isEmpty(accessToken)) { query.field("accessToken").equal(accessToken); } return query.asList(); }