Hibernate HQL查询 分页查询 模糊查询

小记:

Java代码  收藏代码
  1. String hql="from WifiTTerminal where 1=1";   
  2.        hql=hql+" and pws like '%'"+pws1+  
  3. "'%' and useStatus like '%'"+useStatus1+  
  4. "'%' and num like '%'"+num1+  
  5. "'%'";   
lerous (资深程序员) 2010-12-30
别这么干, 楼上的那种需要先过滤非法字符 像 '' 单引号,最好别这么干 
至于楼主,你可以换种写法 
hql=hql+" and pws like ? and useStatus like ? and num like ?"; 
给参数赋值的时候加上两边的% 
paramValues[0]="%"+pws1+"%"; 
paramValues[1]="%"+useStatus1+"%"; 
paramValues[2]="%"+num1+"%";
anyasir (高级程序员) 2010-12-30


/** 
* 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(); 

猜你喜欢

转载自blog.csdn.net/xujingcheng123/article/details/80513754
今日推荐