java中criteria类_hibernate----(Hql)另一种查询---利用Criteria类

package com.etc.test;

import java.util.List;

import org.hibernate.Criteria;

import org.hibernate.Session;

import org.hibernate.criterion.DetachedCriteria;

import org.hibernate.criterion.Restrictions;

import com.etc.dao.HibernateSessionFactory;

import com.etc.entity.Person;

import com.etc.entity.Sex;

public class cri查询

{

static void 基础的cri查询()

{

//1 获取session连接

Session s = HibernateSessionFactory.getSession();

//2 获取Criteria对象(查询标准)

Criteria cri = s.createCriteria(Person.class);

//3 配置各种查询约束条件

//添加约束:pid等于1

cri.add(Restrictions.ge("pid", 2))

.add(Restrictions.like("pname", "老%"));

/*

Criteria cri2 = s.createCriteria(Sex.class);

cri2.add(Restrictions.sizeEq("persons", 3));

*/

//cri.add(Restrictions.or(Restrictions.ge("pid", 2), Restrictions.like("pname", "老%")));

//4 查询结果

/*

List list = cri2.list();

for(Sex sex:list)

{

System.out.println(sex);

}

*/

List list = cri.list();

for(Person p:list)

{

System.out.println(p);

}

//5 关闭

HibernateSessionFactory.closeSession();

}

static void cri关联条件查询()

{

//例子:找出性别含有”未知“关键字的所有人

//1 获取session连接

Session s = HibernateSessionFactory.getSession();

//2 获取Criteria对象(查询标准)

Criteria cri1 = s.createCriteria(Person.class);

//3 创建关联对象的查询cri对象

Criteria cri2 = cri1.createCriteria("sex");

cri2.add(Restrictions.like("sexname", "%未知%"));

List list = cri1.list();

for(Person p:list)

{

System.out.println(p);

}

}

static void 离线查询()

{

//1 在未进行数据库连接时,创建离线查询的对象

DetachedCriteria dri = DetachedCriteria.forClass(Person.class);

dri.add(Restrictions.eq("pid", 2));

//2 一旦发现处于连接状态,则可将离线查询转出在线查询

Session s = HibernateSessionFactory.getSession();

Criteria cri = dri.getExecutableCriteria(s);

//3 执行查询

List list = cri.list();

for(Person p:list)

{

System.out.println(p);

}

}

public static void main(String[] args)

{

//基础的cri查询();

//cri关联条件查询();

离线查询();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值