仿hibernate的Criteria 查询GHql

来源:互联网 发布:软件的可靠性测试 编辑:程序博客网 时间:2024/06/05 19:22

仿hibernate的Criteria

  1. package org.gingko.db.hql;  
  2.   
  3. import java.lang.reflect.Field;  
  4. import java.util.ArrayList;  
  5. import java.util.List;  
  6.   
  7. import org.gingko.db.dao.GKDao;  
  8. /** 
  9.  * 用于创建查询hql  
  10.  * @author administrator 
  11.  * 
  12.  */  
  13. public class GHql {  
  14.      private String[] selList;  
  15.      private String[] selObj;  
  16.      private List<HqlExp> selWhere;  
  17.      private List<Object> obj;  
  18.      private String order;  
  19.      private String group;  
  20.      private GKDao dao;  
  21.      private Field[] f;  
  22.      public String[] getSelList() {  
  23.   return selList;  
  24.  }  
  25.      /** 
  26.       * 设置查询列 可以是聚合函数 
  27.       * @param selList 
  28.       * @return 
  29.       */  
  30.  public GHql selList(String ...  selList) {  
  31.   for(int i=0;i<selList.length;i++){  
  32.    if(selList[i].indexOf(".")==-1 ){  
  33.     if( selList[i].indexOf("(")==-1)  
  34.         selList[i] = "[0]."+selList[i];  
  35.     else{  
  36.      String[] s = selList[i].split("(");  
  37.       selList[i] = s[0]+"([0]."+s[1];  
  38.     }  
  39.    }  
  40.   }  
  41.   this.selList = selList;  
  42.   return this;  
  43.  }  
  44.  public String[] getSelObj() {  
  45.   return selObj;  
  46.  }  
  47.  public GHql setSelObj(String ... selObj) {  
  48.   this.selObj = selObj;  
  49.   return this;  
  50.  }  
  51.    
  52.  private GHql(){  
  53.   obj = new ArrayList<Object> ();  
  54.   this.selWhere = new ArrayList<HqlExp>();  
  55.      }  
  56.  /** 
  57.   * 创建不查询结果的GHql 只着输出Hql用  
  58.   * @param selObjs 带查询的对象 
  59.   * @return 
  60.   */  
  61.      public static GHql from(Class<?>... selObjs){  
  62.      GHql h = new GHql();  
  63.      h.selObj = new String[selObjs.length];  
  64.      h.f = selObjs[0].getDeclaredFields();  
  65.       for(int i=0;i<selObjs.length;i++) h.selObj[i] = selObjs[i].getSimpleName();  
  66.      return h;  
  67.      }  
  68.      /** 
  69.       * 创建带查询结果的GHql  
  70.       * @param dao 查询dao 
  71.       * @param selObjs 带查询的对象 
  72.       * @return 
  73.       */  
  74.      public static GHql from(GKDao dao,Class<?>... selObjs){  
  75.       GHql h = new GHql();  
  76.       h.selObj = new String[selObjs.length];  
  77.       h.f = selObjs[0].getDeclaredFields();  
  78.       for(int i=0;i<selObjs.length;i++) h.selObj[i] = selObjs[i].getSimpleName();  
  79.       h.dao = dao;  
  80.       return h;  
  81.       }  
  82.       private StringBuffer h;  
  83.       /** 
  84.        * 输出最终HQL 
  85.        * @return 
  86.        */  
  87.       public String outHql(){  
  88.       h = new StringBuffer();  
  89.      if(selList !=null && selList.length>0){  
  90.       h.append("select ");  
  91.       for(String li:selList) h.append(li+",");  
  92.       h.setLength(h.length()-1);  
  93.      }  
  94.      h.append(" from ");  
  95.      for(String obj : selObj ){  
  96.       h.append(obj+" ");  
  97.       h.append(obj.toLowerCase()+",");  
  98.      }  
  99.      h.setLength(h.length()-1);  
  100.      if(selWhere !=null && selWhere.size()>0){  
  101.       h.append(" where ");  
  102.       for(HqlExp w:selWhere){   
  103.        setWhere(w);  
  104.          
  105.       };  
  106.       h.setLength(h.length()-4);  
  107.      }  
  108.      String hql = h.toString();  
  109.      if(group!=null && group.trim().length()>0)  
  110.      {  
  111.       hql += " group by "+ group;  
  112.      }  
  113.      if(order!=null && order.trim().length()>0)  
  114.      {  
  115.       hql += " order by "+ order;  
  116.      }  
  117.        
  118.      for(int i=0;i<this.selObj.length ;i++){  
  119.       hql = hql.replace("["+i+"]"this.selObj[i].toLowerCase());  
  120.      }   
  121.      return hql;  
  122.     }  
  123.      /** 
  124.       * 得到查询条件 
  125.       * @param w 
  126.       */  
  127.     private void setWhere(HqlExp w){  
  128.      if(!w.isKH()){  
  129.      h.append(w.getProName()+" ");  
  130.      h.append(w.getEq()+" ");  
  131.      if(!w.isIspro()){  
  132.       if(!w.isHql()){  
  133.        if(!w.isTv()){  
  134.         h.append("?");  
  135.         obj.add(w.getValue());  
  136.          
  137.        }else  
  138.        {  
  139.         h.append("? and ?");  
  140.         obj.add(w.getValue());  
  141.         obj.add(w.getValue1());  
  142.        }  
  143.          
  144.       }  
  145.       else{  
  146.        if(!w.isHd())  
  147.        {  
  148.         GHql l = w.getHql();  
  149.         h.append("(");  
  150.         h.append(l.outHql());  
  151.         h.append(")");  
  152.         Object[] os = l.getObject();  
  153.         for(Object o:os ) obj.add(o);  
  154.        }else{  
  155.         Object[] os = (Object[])w.getValue();  
  156.         h.append("(");  
  157.           for(Object o:os){  
  158.            h.append("?,");  
  159.            obj.add(o);  
  160.           }  
  161.         h.setLength(h.length()-1);  
  162.         h.append(")");  
  163.        }  
  164.       }  
  165.      }else  
  166.      {  
  167.       h.append(w.getProName1());  
  168.      }  
  169.      h.append(w.getLink());  
  170.      }else{  
  171.       if(w.getProName().equals("L"))  
  172.         h.append(" ( ");  
  173.       else{  
  174.        h.setLength(h.length()-4);  
  175.        h.append(" ) ");  
  176.        h.append(w.getLink());  
  177.       }  
  178.      }  
  179.        
  180.     }  
  181.     /** 
  182.      * 获取查询条件的值 
  183.      * @return 
  184.      */  
  185.     public Object[] getObject(){  
  186.      return obj.toArray();  
  187.     }  
  188.     /** 
  189.      * 判断给定的字段是否是当前对象的属性 
  190.      * @param fieldName 字段名称 
  191.      * @return 
  192.      */  
  193.     public boolean isObjField(String fieldName){  
  194.      for(Field fs:f ){  
  195.       if(fs.getName().equals(fieldName)) return true;  
  196.      }  
  197.      return false;  
  198.     }  
  199.     /** 
  200.      * 得到当前对象的字段类型 
  201.      * @param fieldName 字段名称 
  202.      * @return 
  203.      */  
  204.     public String getFieldType(String fieldName){  
  205.      for(Field fs:f ){  
  206.       if(fs.getName().equals(fieldName)) return fs.getType().getSimpleName();  
  207.      }  
  208.      return null;  
  209.     }  
  210.     /** 
  211.      * 添加查询条件 该条件和 下一个查询条件用 and 连接 
  212.      * @param hqlw 
  213.      * @return 
  214.      */  
  215.     public GHql add(HqlExp hqlw){  
  216.      if(hqlw ==null )return this;  
  217.      hqlw.setLink(" and ");  
  218.      this.selWhere.add(hqlw);  
  219.      return this;  
  220.     }  
  221.     /** 
  222.      * 添加左括号 
  223.      * @return 
  224.      */  
  225.     public GHql L(){  
  226.      HqlExp hqlw =Exp.L();  
  227.      hqlw.setLink(" and ");  
  228.      this.selWhere.add(hqlw);  
  229.      return this;  
  230.     }  
  231.     /** 
  232.      * 添加右括号 
  233.      * @return 
  234.      */  
  235.     public GHql R(){  
  236.      HqlExp hqlw =Exp.R();  
  237.      hqlw.setLink(" and ");  
  238.      this.selWhere.add(hqlw);  
  239.      return this;  
  240.     }  
  241.     /** 
  242.      * 添加查询条件 该条件和 下一个查询条件用 or 连接 
  243.      * @param hqlw 
  244.      * @return 
  245.      */  
  246.     public GHql or(HqlExp hqlw){  
  247.      if(hqlw ==null )return this;  
  248.      hqlw.setLink("  or ");  
  249.      this.selWhere.add(hqlw);  
  250.      return this;  
  251.     }  
  252.     /** 
  253.      * 添加排序 条件 
  254.      * @param objName 排序对象 
  255.      * @param proName 排序属性名 
  256.      * @param asc 是否升序 
  257.      * @return 
  258.      */  
  259.     public GHql order(String objName,String proName,boolean asc){  
  260.      if(order==null || order.trim().length()==0){  
  261.       order = objName+"."+proName+" " +(asc?"asc":"desc");  
  262.      }else  
  263.      {  
  264.       order += ","+ objName+"."+proName+" " +(asc?"asc":"desc");  
  265.      }  
  266.      return this;  
  267.     }  
  268.     /** 
  269.      * 添加排序 条件  
  270.      * @param proName 排序属性名 
  271.      * @param asc 是否升序 
  272.      * @return 
  273.      */  
  274.     public GHql order(String proName,boolean asc){  
  275.      return order("[0]",proName,asc);  
  276.     }  
  277.     /** 
  278.      * 添加排序 条件  
  279.      * @param index 对象索引 
  280.      * @param proName 排序属性名 
  281.      * @param asc 是否升序 
  282.      * @return 
  283.      */  
  284.     public GHql order(int index,String proName,boolean asc){  
  285.      return order("["+index+"]",proName,asc);  
  286.     }  
  287.     /** 
  288.      * 添加分组条件  
  289.      * @param objName 分组对象 
  290.      * @param proName 分组属性名 
  291.      * @return 
  292.      */  
  293.     public GHql group(String objName,String proName){  
  294.      group = objName+"."+proName;  
  295.      return this;  
  296.     }  
  297.     /** 
  298.      * 添加分组条件  
  299.      * @param proName 分组属性名 
  300.      * @return 
  301.      */  
  302.     public GHql group(String proName){  
  303.      return group("[0]",proName);  
  304.     }  
  305.     /** 
  306.      * 添加分组条件   
  307.      * @param index 对象索引 
  308.      * @param proName 分组属性名 
  309.      * @return 
  310.      */  
  311.     public GHql group(int index,String proName){  
  312.      return group("["+index+"]",proName);  
  313.     }  
  314.     public static void main(String[] s){  
  315.        
  316.     }  
  317.  public GKDao getDao() {  
  318.   return dao;  
  319.  }  
  320.  public GHql setDao(GKDao dao) {  
  321.   this.dao = dao;  
  322.   return this;  
  323.  }  
  324.   
  325.     /** 
  326.      * 获取查询结果 
  327.      * @return 
  328.      */  
  329.  public List<?> find(){  
  330.   dao.Hql  = this.outHql();  
  331.   return dao.find(this.getObject());  
  332.  }  
  333.  /** 
  334.   * 带分页的查询结果 
  335.   * @param pagesize 
  336.   * @param startRow 
  337.   * @return 
  338.   */  
  339.  public List<?> find(int pagesize,int startRow){  
  340.   dao.Hql  = this.outHql();  
  341.   return dao.find(pagesize,startRow,this.getObject());  
  342.  }  
  343.  /** 
  344.   * 获取查询对象 
  345.   * @return 
  346.   */  
  347.  public Object get(){  
  348.   dao.Hql  = this.outHql();  
  349.   return dao.get(this.getObject());  
  350.  }  
  351.  /** 
  352.   * 获取去查询数 
  353.   * @return 
  354.   */  
  355.  public int count(){  
  356.   if(this.selList==null || this.selList.length==0){  
  357.    this.selList = new String[]{Exp.count()};  
  358.   }  
  359.   dao.countHql  = this.outHql();  
  360.   return dao.count(this.getObject());  
  361.  }  
  362.  /** 
  363.   * 查询数据是否存在 
  364.   * @return 
  365.   */  
  366.  public boolean have(){  
  367.   if(this.count()>0)return true;  
  368.   return false;  
  369.  }  
  370.  /** 
  371.   * 获取首行首列 
  372.   * @return 
  373.   */  
  374.  public Object executeScalar(){  
  375.   dao.Hql  = this.outHql();  
  376.   return dao.executeScalar(this.getObject());  
  377.  }  
  378.    
  379. }  
 
  
 
  1. package org.gingko.db.hql;  
  2.   
  3. public class Exp {  
  4.    
  5.  /** 
  6.   * 默认表属性和值的比较 
  7.   * @param eq 操作符 
  8.   * @param proName 属性名 
  9.   * @param value 值 
  10.   * @return 
  11.   */  
  12.     public static HqlExp exp(String eq,String proName,Object value){  
  13.      return exp_(0,proName,eq,value);  
  14.     }  
  15.     /** 
  16.      * 指定表属性和值的比较 
  17.      * @param eq 操作符 
  18.      * @param objName 表名 
  19.      * @param proName 属性名 
  20.      * @param value 值 
  21.      * @return 
  22.      */  
  23.     public static HqlExp exp(String eq,String objName,String proName,Object value){  
  24.      return exp_(objName,proName,eq,value);  
  25.     }  
  26.     /** 
  27.      * 指定表属性和值的比较 
  28.      * @param eq 操作符 
  29.      * @param index 表索引 
  30.      * @param proName 属性名 
  31.      * @param value 值 
  32.      * @return 
  33.      */  
  34.     public static HqlExp exp(String eq,int index,String proName,Object value){  
  35.      return exp_(index,proName,eq,value);  
  36.     }  
  37.     /** 
  38.      * 默认表和指定表属性的比较  
  39.      * @param eq 操作符  
  40.      * @param proName 属性名 
  41.      * @param objName1 指定表 
  42.      * @param proName1 属性名 
  43.      * @return 
  44.      */  
  45.     public static HqlExp exp(String eq,String proName,String objName1, String proName1){  
  46.      return exp_(0,proName,eq,objName1+"."+proName1);  
  47.     }  
  48.     /** 
  49.      * 默认表和指定表属性的比较  
  50.      * @param eq 操作符  
  51.      * @param proName 属性名 
  52.      * @param index1 指定表 
  53.      * @param proName1 属性名 
  54.      * @return 
  55.      */  
  56.     public static HqlExp exp(String eq,String proName,int index1, String proName1){  
  57.      return exp_(0,proName,eq,"["+index1+"]."+proName1);  
  58.     }  
  59.     /** 
  60.      * 指定表和指定表属性的比较  
  61.      * @param eq 操作符 
  62.      * @param objName 表1 
  63.      * @param proName 属性 
  64.      * @param objName1 表2 
  65.      * @param proName1 属性 
  66.      * @return 
  67.      */  
  68.     public static HqlExp exp(String eq,String objName,String proName,String objName1, String proName1){  
  69.      return exp_(objName,proName,eq,objName1+"."+proName1);  
  70.     }  
  71.     /** 
  72.      * 指定表和指定表属性的比较  
  73.      * @param eq 操作符 
  74.      * @param index 表1索引 
  75.      * @param proName 属性 
  76.      * @param index1 表2索引 
  77.      * @param proName1 属性 
  78.      * @return 
  79.      */  
  80.     public static HqlExp exp(String eq,int index,String proName,int index1, String proName1){  
  81.      return exp_(index,proName,eq,"["+index1+"]."+proName1);  
  82.     }  
  83.       
  84.     private static HqlExp exp_(String objName,String proName,String eq,Object value){  
  85.      return new HqlExp(objName+"."+proName,eq,value);  
  86.     }  
  87.     private static HqlExp exp_(int index,String proName,String eq,Object value){  
  88.      return new HqlExp("["+index+"]."+proName,eq,value);  
  89.     }  
  90.      
  91.     private static HqlExp exp_(int index,String proName,String eq,String proName1){  
  92.      return new HqlExp("["+index+"]."+proName,eq,proName1);  
  93.     }  
  94.       
  95.       
  96.       
  97.       
  98.     /** 
  99.   * 默认表属性和值的等于比较 
  100.   * @param proName 属性名 
  101.   * @param value 值 
  102.   * @return 
  103.   */  
  104.     public static HqlExp eq(String proName,Object value){  
  105.      return exp("=",proName,value);  
  106.     }  
  107.     /** 
  108.      * 指定表属性和值的等于比较 
  109.      * @param objName 表名 
  110.      * @param proName 属性名 
  111.      * @param value 值 
  112.      * @return 
  113.      */  
  114.     public static HqlExp eq(String objName,String proName,Object value){  
  115.      return exp("=",objName,proName,value);  
  116.     }  
  117.     /** 
  118.      * 指定表属性和值的等于比较 
  119.      * @param index 表索引 
  120.      * @param proName 属性名 
  121.      * @param value 值 
  122.      * @return 
  123.      */  
  124.     public static HqlExp eq(int index,String proName,Object value){  
  125.      return exp("=",index,proName,value);  
  126.     }  
  127.     /** 
  128.      * 默认表和指定表属性的等于比较 
  129.      * @param proName 属性名 
  130.      * @param objName1 指定表 
  131.      * @param proName1 属性名 
  132.      * @return 
  133.      */  
  134.     public static HqlExp eq(String proName,String objName1, String proName1){  
  135.      return exp("=",proName,objName1,proName1);  
  136.     }  
  137.     /** 
  138.      * 默认表和指定表属性的等于比较  
  139.      * @param proName 属性名 
  140.      * @param index1 指定表 
  141.      * @param proName1 属性名 
  142.      * @return 
  143.      */  
  144.     public static HqlExp eq(String proName,int index1, String proName1){  
  145.      return exp("=",proName,index1,proName1);  
  146.     }  
  147.     /** 
  148.      * 指定表和指定表属性的等于比较 
  149.      * @param objName 表1 
  150.      * @param proName 属性 
  151.      * @param objName1 表2 
  152.      * @param proName1 属性 
  153.      * @return 
  154.      */  
  155.     public static HqlExp eq(String objName,String proName,String objName1, String proName1){  
  156.      return exp("=",objName,proName,objName1,proName1);  
  157.     }  
  158.     /** 
  159.      * 指定表和指定表属性的等于比较  
  160.      * @param index 表1索引 
  161.      * @param proName 属性 
  162.      * @param index1 表2索引 
  163.      * @param proName1 属性 
  164.      * @return 
  165.      */  
  166.     public static HqlExp eq(int index,String proName,int index1, String proName1){  
  167.      return exp("=",index,proName,index1,proName1);  
  168.     }  
  169.       
  170.       
  171.       
  172.     /** 
  173.   * 默认表属性和值的大于比较 
  174.   * @param proName 属性名 
  175.   * @param value 值 
  176.   * @return 
  177.   */  
  178.     public static HqlExp gt(String proName,Object value){  
  179.      return exp(">",proName,value);  
  180.     }  
  181.     /** 
  182.      * 指定表属性和值的大于比较 
  183.      * @param objName 表名 
  184.      * @param proName 属性名 
  185.      * @param value 值 
  186.      * @return 
  187.      */  
  188.     public static HqlExp gt(String objName,String proName,Object value){  
  189.      return exp(">",objName,proName,value);  
  190.     }  
  191.     /** 
  192.      * 指定表属性和值的大于比较 
  193.      * @param index 表索引 
  194.      * @param proName 属性名 
  195.      * @param value 值 
  196.      * @return 
  197.      */  
  198.     public static HqlExp gt(int index,String proName,Object value){  
  199.      return exp(">",index,proName,value);  
  200.     }  
  201.     /** 
  202.      * 默认表和指定表属性的大于比较 
  203.      * @param proName 属性名 
  204.      * @param objName1 指定表 
  205.      * @param proName1 属性名 
  206.      * @return 
  207.      */  
  208.     public static HqlExp gt(String proName,String objName1, String proName1){  
  209.      return exp(">",proName,objName1,proName1);  
  210.     }  
  211.     /** 
  212.      * 默认表和指定表属性的大于比较  
  213.      * @param proName 属性名 
  214.      * @param index1 指定表 
  215.      * @param proName1 属性名 
  216.      * @return 
  217.      */  
  218.     public static HqlExp gt(String proName,int index1, String proName1){  
  219.      return exp(">",proName,index1,proName1);  
  220.     }  
  221.     /** 
  222.      * 指定表和指定表属性的大于比较 
  223.      * @param objName 表1 
  224.      * @param proName 属性 
  225.      * @param objName1 表2 
  226.      * @param proName1 属性 
  227.      * @return 
  228.      */  
  229.     public static HqlExp gt(String objName,String proName,String objName1, String proName1){  
  230.      return exp(">",objName,proName,objName1,proName1);  
  231.     }  
  232.     /** 
  233.      * 指定表和指定表属性的大于比较  
  234.      * @param index 表1索引 
  235.      * @param proName 属性 
  236.      * @param index1 表2索引 
  237.      * @param proName1 属性 
  238.      * @return 
  239.      */  
  240.     public static HqlExp gt(int index,String proName,int index1, String proName1){  
  241.      return exp(">",index,proName,index1,proName1);  
  242.     }  
  243.       
  244.       
  245.     /** 
  246.   * 默认表属性和值的大于等于比较 
  247.   * @param proName 属性名 
  248.   * @param value 值 
  249.   * @return 
  250.   */  
  251.     public static HqlExp ge(String proName,Object value){  
  252.      return exp(">=",proName,value);  
  253.     }  
  254.     /** 
  255.      * 指定表属性和值的大于等于比较 
  256.      * @param objName 表名 
  257.      * @param proName 属性名 
  258.      * @param value 值 
  259.      * @return 
  260.      */  
  261.     public static HqlExp ge(String objName,String proName,Object value){  
  262.      return exp(">=",objName,proName,value);  
  263.     }  
  264.     /** 
  265.      * 指定表属性和值的大于等于比较 
  266.      * @param index 表索引 
  267.      * @param proName 属性名 
  268.      * @param value 值 
  269.      * @return 
  270.      */  
  271.     public static HqlExp ge(int index,String proName,Object value){  
  272.      return exp(">=",index,proName,value);  
  273.     }  
  274.     /** 
  275.      * 默认表和指定表属性的大于等于比较 
  276.      * @param proName 属性名 
  277.      * @param objName1 指定表 
  278.      * @param proName1 属性名 
  279.      * @return 
  280.      */  
  281.     public static HqlExp ge(String proName,String objName1, String proName1){  
  282.      return exp(">=",proName,objName1,proName1);  
  283.     }  
  284.     /** 
  285.      * 默认表和指定表属性的大于等于比较  
  286.      * @param proName 属性名 
  287.      * @param index1 指定表 
  288.      * @param proName1 属性名 
  289.      * @return 
  290.      */  
  291.     public static HqlExp ge(String proName,int index1, String proName1){  
  292.      return exp(">=",proName,index1,proName1);  
  293.     }  
  294.     /** 
  295.      * 指定表和指定表属性的大于等于比较 
  296.      * @param objName 表1 
  297.      * @param proName 属性 
  298.      * @param objName1 表2 
  299.      * @param proName1 属性 
  300.      * @return 
  301.      */  
  302.     public static HqlExp ge(String objName,String proName,String objName1, String proName1){  
  303.      return exp(">=",objName,proName,objName1,proName1);  
  304.     }  
  305.     /** 
  306.      * 指定表和指定表属性的大于等于比较  
  307.      * @param index 表1索引 
  308.      * @param proName 属性 
  309.      * @param index1 表2索引 
  310.      * @param proName1 属性 
  311.      * @return 
  312.      */  
  313.     public static HqlExp ge(int index,String proName,int index1, String proName1){  
  314.      return exp(">=",index,proName,index1,proName1);  
  315.     }  
  316.       
  317.       
  318.       
  319.     /** 
  320.   * 默认表属性和值的小于比较 
  321.   * @param proName 属性名 
  322.   * @param value 值 
  323.   * @return 
  324.   */  
  325.     public static HqlExp lt(String proName,Object value){  
  326.      return exp("<",proName,value);  
  327.     }  
  328.     /** 
  329.      * 指定表属性和值的小于比较 
  330.      * @param objName 表名 
  331.      * @param proName 属性名 
  332.      * @param value 值 
  333.      * @return 
  334.      */  
  335.     public static HqlExp lt(String objName,String proName,Object value){  
  336.      return exp("<",objName,proName,value);  
  337.     }  
  338.     /** 
  339.      * 指定表属性和值的小于比较 
  340.      * @param index 表索引 
  341.      * @param proName 属性名 
  342.      * @param value 值 
  343.      * @return 
  344.      */  
  345.     public static HqlExp lt(int index,String proName,Object value){  
  346.      return exp("<",index,proName,value);  
  347.     }  
  348.     /** 
  349.      * 默认表和指定表属性的小于比较 
  350.      * @param proName 属性名 
  351.      * @param objName1 指定表 
  352.      * @param proName1 属性名 
  353.      * @return 
  354.      */  
  355.     public static HqlExp lt(String proName,String objName1, String proName1){  
  356.      return exp("<",proName,objName1,proName1);  
  357.     }  
  358.     /** 
  359.      * 默认表和指定表属性的小于比较  
  360.      * @param proName 属性名 
  361.      * @param index1 指定表 
  362.      * @param proName1 属性名 
  363.      * @return 
  364.      */  
  365.     public static HqlExp lt(String proName,int index1, String proName1){  
  366.      return exp("<",proName,index1,proName1);  
  367.     }  
  368.     /** 
  369.      * 指定表和指定表属性的小于比较 
  370.      * @param objName 表1 
  371.      * @param proName 属性 
  372.      * @param objName1 表2 
  373.      * @param proName1 属性 
  374.      * @return 
  375.      */  
  376.     public static HqlExp lt(String objName,String proName,String objName1, String proName1){  
  377.      return exp("<",objName,proName,objName1,proName1);  
  378.     }  
  379.     /** 
  380.      * 指定表和指定表属性的小于比较  
  381.      * @param index 表1索引 
  382.      * @param proName 属性 
  383.      * @param index1 表2索引 
  384.      * @param proName1 属性 
  385.      * @return 
  386.      */  
  387.     public static HqlExp lt(int index,String proName,int index1, String proName1){  
  388.      return exp("<",index,proName,index1,proName1);  
  389.     }  
  390.       
  391.       
  392.     /** 
  393.   * 默认表属性和值的小于等于比较 
  394.   * @param proName 属性名 
  395.   * @param value 值 
  396.   * @return 
  397.   */  
  398.     public static HqlExp le(String proName,Object value){  
  399.      return exp("<=",proName,value);  
  400.     }  
  401.     /** 
  402.      * 指定表属性和值的小于等于比较 
  403.      * @param objName 表名 
  404.      * @param proName 属性名 
  405.      * @param value 值 
  406.      * @return 
  407.      */  
  408.     public static HqlExp le(String objName,String proName,Object value){  
  409.      return exp("<=",objName,proName,value);  
  410.     }  
  411.     /** 
  412.      * 指定表属性和值的小于等于比较 
  413.      * @param index 表索引 
  414.      * @param proName 属性名 
  415.      * @param value 值 
  416.      * @return 
  417.      */  
  418.     public static HqlExp le(int index,String proName,Object value){  
  419.      return exp("<=",index,proName,value);  
  420.     }  
  421.     /** 
  422.      * 默认表和指定表属性的小于等于比较 
  423.      * @param proName 属性名 
  424.      * @param objName1 指定表 
  425.      * @param proName1 属性名 
  426.      * @return 
  427.      */  
  428.     public static HqlExp le(String proName,String objName1, String proName1){  
  429.      return exp("<=",proName,objName1,proName1);  
  430.     }  
  431.     /** 
  432.      * 默认表和指定表属性的小于等于比较  
  433.      * @param proName 属性名 
  434.      * @param index1 指定表 
  435.      * @param proName1 属性名 
  436.      * @return 
  437.      */  
  438.     public static HqlExp le(String proName,int index1, String proName1){  
  439.      return exp("<=",proName,index1,proName1);  
  440.     }  
  441.     /** 
  442.      * 指定表和指定表属性的小于等于比较 
  443.      * @param objName 表1 
  444.      * @param proName 属性 
  445.      * @param objName1 表2 
  446.      * @param proName1 属性 
  447.      * @return 
  448.      */  
  449.     public static HqlExp le(String objName,String proName,String objName1, String proName1){  
  450.      return exp("<=",objName,proName,objName1,proName1);  
  451.     }  
  452.     /** 
  453.      * 指定表和指定表属性的小于等于比较  
  454.      * @param index 表1索引 
  455.      * @param proName 属性 
  456.      * @param index1 表2索引 
  457.      * @param proName1 属性 
  458.      * @return 
  459.      */  
  460.     public static HqlExp le(int index,String proName,int index1, String proName1){  
  461.      return exp("<=",index,proName,index1,proName1);  
  462.     }  
  463.       
  464.     /** 
  465.   * 默认表属性和值的like比较 
  466.   * @param proName 属性名 
  467.   * @param value 值 
  468.   * @return 
  469.   */  
  470.     public static HqlExp like(String proName,Object value){  
  471.      return exp("like",proName,value);  
  472.     }  
  473.     /** 
  474.      * 指定表属性和值的like比较 
  475.      * @param objName 表名 
  476.      * @param proName 属性名 
  477.      * @param value 值 
  478.      * @return 
  479.      */  
  480.     public static HqlExp like(String objName,String proName,Object value){  
  481.      return exp("like",objName,proName,value);  
  482.     }  
  483.     /** 
  484.      * 指定表属性和值的like比较 
  485.      * @param index 表索引 
  486.      * @param proName 属性名 
  487.      * @param value 值 
  488.      * @return 
  489.      */  
  490.     public static HqlExp like(int index,String proName,Object value){  
  491.      return exp("like",index,proName,value);  
  492.     }  
  493.     /** 
  494.      * 添加右括号 
  495.      * @return 
  496.      */  
  497.     public static HqlExp R(){  
  498.      return new HqlExp("R");  
  499.     }  
  500.     /** 
  501.      * 添加左括号 
  502.      * @return 
  503.      */  
  504.     public static HqlExp L(){  
  505.      return new HqlExp("L");  
  506.     }  
  507.     /** 
  508.      * 默认表属性和指定GHql的in 包含关系 
  509.      * @param proName  属性名 
  510.      * @param hql GHql  
  511.      * @return 
  512.      */  
  513.     public static HqlExp in(String proName,GHql hql){  
  514.      return new HqlExp("[0]."+proName,"in",hql);  
  515.     }   
  516.     /** 
  517.      * 指定表属性和指定GHql的in 包含关系 
  518.      * @param objName 对象名 
  519.      * @param proName 属性名 
  520.      * @param hql GHql 
  521.      * @return 
  522.      */  
  523.     public static HqlExp in(String objName,String proName,GHql hql){  
  524.      return new HqlExp(objName+"."+proName,"in",hql);  
  525.     }   
  526.     /** 
  527.      * 指定表属性和指定GHql的in 包含关系 
  528.      * @param index 对象索引 
  529.      * @param proName 属性名 
  530.      * @param hql GHql 
  531.      * @return 
  532.      */  
  533.     public static HqlExp in(int index,String proName,GHql hql){  
  534.      return new HqlExp("["+index+"]."+proName,"in",hql);  
  535.     }   
  536.       
  537.     /** 
  538.      * 默认表属性和指定GHql的in 包含关系 
  539.      * @param proName  属性名 
  540.      * @param hql GHql  
  541.      * @return 
  542.      */  
  543.     public static HqlExp in(String proName,Object[] values){  
  544.      return new HqlExp("[0]."+proName,"in",values);  
  545.     }   
  546.     /** 
  547.      * 指定表属性和指定GHql的in 包含关系 
  548.      * @param objName 对象名 
  549.      * @param proName 属性名 
  550.      * @param hql GHql 
  551.      * @return 
  552.      */  
  553.     public static HqlExp in(String objName,String proName,Object[] values){  
  554.      return new HqlExp(objName+"."+proName,"in",values);  
  555.     }   
  556.     /** 
  557.      * 指定表属性和指定GHql的in 包含关系 
  558.      * @param index 对象索引 
  559.      * @param proName 属性名 
  560.      * @param hql GHql 
  561.      * @return 
  562.      */  
  563.     public static HqlExp in(int index,String proName,Object[] values){  
  564.      return new HqlExp("["+index+"]."+proName,"in",values);  
  565.     }   
  566.       
  567.       
  568.       
  569.     /** 
  570.      * 默认表属性和指定GHql的not in 包含关系 
  571.      * @param proName  属性名 
  572.      * @param hql GHql  
  573.      * @return 
  574.      */  
  575.     public static HqlExp notin(String proName,GHql hql){  
  576.      return new HqlExp("[0]."+proName,"not in",hql);  
  577.     }   
  578.     /** 
  579.      * 指定表属性和指定GHql的not in  包含关系 
  580.      * @param objName 对象名 
  581.      * @param proName 属性名 
  582.      * @param hql GHql 
  583.      * @return 
  584.      */  
  585.     public static HqlExp notin(String objName,String proName,GHql hql){  
  586.      return new HqlExp(objName+"."+proName,"not in",hql);  
  587.     }   
  588.     /** 
  589.      * 指定表属性和指定GHql的not in 包含关系 
  590.      * @param index 对象索引 
  591.      * @param proName 属性名 
  592.      * @param hql GHql 
  593.      * @return 
  594.      */  
  595.     public static HqlExp notin(int index,String proName,GHql hql){  
  596.      return new HqlExp("["+index+"]."+proName,"not in",hql);  
  597.     }   
  598.       
  599.     /** 
  600.      * 默认表属性的 between 查询 
  601.      * @param proName  属性名 
  602.      * @param value 值1 
  603.      * @param value1 值2 
  604.      * @return  
  605.      */  
  606.     public static HqlExp between(String proName ,Object value ,Object value1){  
  607.      return new HqlExp("[0]."+proName,"between",value,value1);  
  608.     }  
  609.     /** 
  610.      * 指定表属性的 between 查询 
  611.      * @param objName 对象名 
  612.      * @param proName 属性名 
  613.      * @param value 值1 
  614.      * @param value1 值2 
  615.      * @return 
  616.      */  
  617.     public static HqlExp between(String objName,String proName ,Object value ,Object value1){  
  618.      return new HqlExp(objName+"."+proName,"between",value,value1);  
  619.     }  
  620.     /** 
  621.      * 指定表属性的 between 查询 
  622.      * @param index 对象索引 
  623.      * @param proName 属性名 
  624.      * @param value 值1 
  625.      * @param value1 值2 
  626.      * @return 
  627.      */  
  628.     public static HqlExp between(int index,String proName ,Object value ,Object value1){  
  629.      return new HqlExp("["+index+"]."+proName,"between",value,value1);  
  630.     }  
  631.     /** 
  632.      * 用于执行 聚合相关函数 
  633.      * @param methodName 聚合函数名称 
  634.      * @param proName 属性名 
  635.      * @return 
  636.      */  
  637.     public static String method(String methodName,String proName){  
  638.      return methodName+"("+proName+")";  
  639.     }  
  640.     /** 
  641.      * 求总数 
  642.      * @return 
  643.      */  
  644.     public static String count(){  
  645.      return "count(*)";  
  646.     }   
  647.     /** 
  648.      * 求总数 
  649.      * @param proName 属性名 
  650.      * @return 
  651.      */  
  652.     public static String count(String proName){  
  653.      return method("count",proName);  
  654.     }   
  655.     /** 
  656.      * 求最大值 
  657.      * @param proName 
  658.      * @return 
  659.      */  
  660.     public static String max(String proName){  
  661.      return method("max",proName);  
  662.     }   
  663.     /** 
  664.      * 求最小值 
  665.      * @param proName 
  666.      * @return 
  667.      */  
  668.     public static String min(String proName){  
  669.      return method("min",proName);  
  670.     }   
  671.     /** 
  672.      * 求最和 
  673.      * @param proName 
  674.      * @return 
  675.      */  
  676.     public static String sum(String proName){  
  677.      return method("sum",proName);  
  678.     }   
  679.       
  680. }  
原创粉丝点击