`
txf2004
  • 浏览: 6874308 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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

 
阅读更多

小记:

Java代码收藏代码
  1. Stringhql="fromWifiTTerminalwhere1=1";
  2. hql=hql+"andpwslike'%'"+pws1+
  3. "'%'anduseStatuslike'%'"+useStatus1+
  4. "'%'andnumlike'%'"+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();

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics