Hibernate中HQL语句写法

    添加时间:2013-5-29 点击量:

    开端项目中HQL语句写的斗劲随便,后来看了下Hibernate 中Query和Criteria API,和sql语句的编译过程 。懂得查询前提不要直接应用字符串拼接,可以大大进步sql语句履行效力,代码也加倍规范安然。


    query 的根蒂根基写法:


      应用“=:xx” 标识变量


      setString(xx, ....)   插入对应的搜刮前提




    public String DocSerialNo(String perType, String organId) {
    
    String Hql
    = LicenceSerialNo set curnum=curnum+1 where curareaid=:organId and areaid=:perType;
    Query qr
    =this.getSession().createQuery(Hql);
    qr.setString(
    organId, organId);
    qr.setString(
    perType, perType);
    int i=qr.executeUpdate();
    if(i<1)return null;
    String findSerialHql
    = LicenceSerialNo where curareaid=:organId and areaid=:perType;
    Query findQr
    =this.getSession().createQuery(findSerialHql);
    findQr.setString(
    organId, organId);
    findQr.setString(
    perType, perType);
    LicenceSerialNo licSerial
    =(LicenceSerialNo) findQr.list().get(0);
    String licNo
    =licSerial.getLicencetype()+new DecimalFormat(0000).format(licSerial.getCurnum());
    return licNo;
    }



    criterial 应用:


      cr.add()   在sql语句后拼接查询限制前提


      Restrictions类供给了查询限制机制。它供给了很多办法,以实现查询限制.



    Criteria cr = session.createCriteria(Student.class); //生成一个Criteria对象
    
    cr.add(Restrictions.eq(name, Bill));//等价于where name=’Bill’
    List list = cr.list();
    Student stu
    = (Student)list.get(0);
    System.out.println(stu.getName());



    我们永远不要期待别人的拯救,只有自己才能升华自己。自己已准备好了多少容量,方能吸引对等的人与我们相遇,否则再美好的人出现、再动人的事情降临身边,我们也没有能量去理解与珍惜,终将擦肩而过。—— 姚谦《品味》
    分享到: