1. public List queryPage(Class clazz, String[] cascades, int start, int limit,
  2. List<Criterion> exs) {
  3. Criteria criteria = getSession().createCriteria(clazz);
  4. /**
  5. * 设置分页限制
  6. */
  7. if (cascades.length > 0) {
  8. for (String c : cascades) {
  9. criteria = getSession().createCriteria(clazz).setFetchMode(c,
  10. FetchMode.EAGER);
  11. if (exs != null && exs.size() > 0) {
  12. for (Criterion i : exs) {
  13. criteria.add(i);
  14. }
  15. }
  16. if (!String.valueOf(start).isEmpty()) {
  17. criteria.setFirstResult(start);
  18. }
  19. if (!String.valueOf(limit).isEmpty()) {
  20. criteria.setMaxResults(limit);
  21. }
  22. }
  23. }
  24. return criteria.list();
  25. }
  1. /**
  2. * 条件查询
  3. *
  4. * @return
  5. * @throws ParseException
  6. */
  7. public List<Criterion> completeCriterion() throws ParseException {
  8. List<Criterion> cris = new ArrayList<Criterion>();
  9. Enumeration params = (Enumeration) this.servletRequest
  10. .getParameterNames();
  11. while (params.hasMoreElements()) {
  12. String param = (String) params.nextElement();
  13. if (param.contains("_")) {
  14. String[] array = param.split("_");
  15. String paramname = "";
  16. String action = "";
  17. String type = "";
  18. if (array.length == 3) {
  19. paramname = array[0];
  20. action = array[1];
  21. type = array[2];
  22. }
  23. if (array.length == 4) {
  24. paramname = array[0] + "." + array[1];
  25. action = array[2];
  26. type = array[3];
  27. }
  28. if (Util.isValidSring(paramname) && Util.isValidSring(action)
  29. && Util.isValidSring(type)) {
  30. String paramvalue = this.servletRequest.getParameter(param);
  31. if (Util.isValidSring(paramvalue) == true) {
  32. Criterion c = null;
  33. if (action.equals("LIKE")) {
  34. c = Expression.like(paramname, this.value(type,
  35. paramvalue).toString(), MatchMode.ANYWHERE);
  36. }
  37. if (action.equals("GT")) {
  38. c = Expression.gt(paramname, this.value(type,
  39. paramvalue));
  40. }
  41. if (action.equals("LT")) {
  42. c = Expression.lt(paramname, this.value(type,
  43. paramvalue));
  44. }
  45. if (action.equals("EQ")) {
  46. c = Expression.eq(paramname, this.value(type,
  47. paramvalue));
  48. }
  49. if (c != null) {
  50. cris.add(c);
  51. }
  52. }
  53. }
  54. }
  55. }
  56. return cris;
  57. }
  58. public Object value(String type, String paramvalue) throws ParseException {
  59. if (type.equals("DATE")) {
  60. return DateFormat.getDateInstance().parse(paramvalue);
  61. }
  62. if (type.equals("LONG")) {
  63. return Long.valueOf(paramvalue);
  64. }
  65. if (type.equals("INT")) {
  66. return Integer.valueOf(paramvalue);
  67. } else {
  68. return paramvalue;
  69. }
  70. }
  71. /**
  72. * 匹配公式符号
  73. *
  74. * @param f
  75. * @return
  76. */
  77. public String completeFormula(String f) {
  78. if (f.equals("LIKE")) {
  79. return " like ";
  80. }
  81. if (f.equals("GT")) {
  82. return " > ";
  83. }
  84. if (f.equals("LT")) {
  85. return " < ";
  86. }
  87. if (f.equals("EQ")) {
  88. return " = ";
  89. } else {
  90. return "";
  91. }
  92. }

用法

  1. int st = (getPageI() - 1) * getLimitI();
  2. List list = this.cservice.queryPage(Job.class,
  3. new String[] { "depart" }, st, getLimitI(),
  4. completeCriterion());

参数的形式如下:

name_EQ_STRING

createDate_GT_DATE

createDATE_LT_DATE

sex_EQ_INT

age_EQ_LONG

版权声明:本文为tatame原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/tatame/archive/2012/06/17/2552524.html