/**
* HQL查询的一个例子
*/
public static void hql()
{
Session s = null;
try
{
s = HibernateUtil.getSeesion();
//final String hql = "from User as u where u.name=?";
final String hql = "from User as u where u.name=:name";
final Query query = s.createQuery(hql);
//query.setString(0, "北京市"); //从0开始
query.setString("name", "北京市");
final List<User> list = query.list();
for (final User u : list)
{
System.out.println(u.getName());
}
}
finally
{
if (s != null)
{
s.close();
}
}
System.out.println("HQL完成");
}
HibernateUtil工具类
package dao;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
/**
* 这是一个工具类, 快速取得session
*
*/
public class HibernateUtil
{
static SessionFactory sessionFactory = null;
static
{
final Configuration cfg = new Configuration();
cfg.configure(); //路径可以改变
sessionFactory = cfg.buildSessionFactory();
}
public static SessionFactory getSessionFactory()
{
return sessionFactory;
}
/**
* 取得session
*
* @return session
*/
public static Session getSeesion()
{
return sessionFactory.openSession();
}
} /**
* HQL 分页查询
*/
public static void page()
{
Session s = null;
try
{
s = HibernateUtil.getSeesion();
final String hql = " from User "; //User是类名
final Query q = s.createQuery(hql);
q.setFirstResult(0); //从第0条开始
q.setMaxResults(10); //取出10条
final List list = q.list();
for (final User u : list)
{
System.out.println(u.getId() + " " + u.getName());
}
}
finally
{
s.clear();
}
}
模糊查询
public List<User> getUsers(String id){
List list=new ArrayList<User>();
String hql="from User as user where user.id like :id"; //参数名称查询
factory=DBHelper.getSessionFactory();
Session session=factory.openSession();
Transaction transaction=session.beginTransaction();
Query query=session.createQuery(hql);
query.setString("id", "%"+id+"%");
list=query.list();
transaction.commit();
session.close();
return list;
} //可以拼字符串
List students = session.createQuery("select s.id, s.name from Student s where s.name like '%1%'").list();
//Query query = session.createQuery("select s.id, s.name from Student s where s.name like ?");
//query.setParameter(0, "%1%");
//List students = query.list();
//可以使用?方式传递参数
//参数的索引从0开始
//传递的参数值,不用单引号引起来
//注意方法链编程
List students = session.createQuery("select s.id, s.name from Student s where s.name like ?")
.setParameter(0, "%1%")
.list();
//使用 :参数名称 的方式传递参数值
List students = session.createQuery("select s.id, s.name from Student s where s.name like :myname")
.setParameter("myname", "%1%")
.list();
//使用 :参数名称 的方式传递参数值
List students = session.createQuery("select s.id, s.name from Student s where s.name like :myname and s.id=:myid")
.setParameter("myname", "%1%")
.setParameter("myid", 12)
.list();
//支持in,需要使用setParameterList进行参数传递
List students = session.createQuery("select s.id, s.name from Student s where s.id in(:myids)")
.setParameterList("myids", new Object[]{1, 2, 3, 4, 5})
.list();
//查询2008年2月创建的学生
List students = session.createQuery("select s.id, s.name from Student s where date_format(s.createTime, '%Y-%m')=?")
.setParameter(0, "2008-02")
.list();
//查询2008-01-10到2008-02-15创建的学生
List students = session.createQuery("select s.id, s.name from Student s where s.createTime between ? and ?")
.setParameter(0, sdf.parse("2008-01-10 00:00:00"))
.setParameter(1, sdf.parse("2008-02-15 23:59:59"))
.list();