hibernate HQL和Criteria

 

package com.test;

import java.util.Date;
import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;

import com.entity.User;
import com.hibernate.HibernateUtil;

public class QueryTest 
{
    public static void main(String[] args)
    {
        User user = new User();
        user.setName("name");
        user.setBirthday(new Date());
        HibernateUtil.addUser(user);
        query(user.getName());
    }
    static void query(String name)
    {
        Session s = null;
        try
        {
            s = HibernateUtil.getSession();
            String hql = "from User as user where user.name = ?";
            Query query = s.createQuery(hql);
            query.setString(0, name);
            List<User> list = query.list();
            for(User user:list)
            {
                System.out.println(user.getId() + "  " + user.getName());
            }
        }
        finally
        {
            if(s != null)
            {
                s.close();
            }
        }
    }
}

这段代码中,HibernateUtil是自己写的工具类,封装了一些方法。

上面代码中,先add一个新的user。然后使用query运行hql语句。

除了query.list();
还有常用的query.uniqueResult();

 另外就是分页要用的方法:

query.setFirstResult(1);
query.setMaxResults(10);

package com.test;

import java.util.Date;
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.Restrictions;

import com.entity.User;
import com.hibernate.HibernateUtil;

public class Cri 
{
    public static void main(String[] args)
    {
        User user = new User();
        user.setName("xiaoy");
        user.setBirthday(new Date());
        HibernateUtil.addUser(user);
        cri(user.getName());
    }
    static void cri(String name)
    {
        Session s = null;
        try
        {
            s = HibernateUtil.getSession();
            Criteria cri = s.createCriteria(User.class);
            cri.add(Restrictions.eq("name", name));
            List<User> list = cri.list();
            for(User u:list)
            {
                System.out.print(u.getName() + " ");
            }
        }
        finally
        {
            if(s != null)
            {
                s.close();
            }
        }
    }
}

Criteria使用方法也很简单,主要看调用Restrictions来设置查询条件。

posted on 2016-04-07 20:41  J·Marcus  阅读(254)  评论(0编辑  收藏  举报

导航