//Criteria查询
public void testCriteria(){
session=HibernateUtil.getSession();
//session.createCriteria(.class);
Criteria criteria=session.createCriteria(Emp.class);
List<Emp> elist=criteria.list();
for (Emp e : elist) {
System.out.println(e.getEname() + " : " + e.getSal());
}
HibernateUtil.closeSession();
}
//Criteria约束查询:eq、lt、le、gt、ge
public void testCriteria2(){
session=HibernateUtil.getSession();
Criteria criteria=session.createCriteria(Emp.class);
//Restrictions.lt("类的属性",查询目标值);
Criterion criterion=Restrictions.lt("sal",2452D );
criteria.add(criterion);
List<Emp> elist=criteria.list();
for (Emp e : elist) {
System.out.println(e.getEname() + " : " + e.getSal());
}
HibernateUtil.closeSession();
}
//简化写
public void testCriteria2(){
session=HibernateUtil.getSession();
//Criteria criteria=session.createCriteria(Emp.class);
//Restrictions.lt("类的属性",查询目标值);
//Criterion criterion=Restrictions.lt("sal",2452D );
List<Emp> elist=session.createCriteria(Emp.class).add(Restrictions.lt("sal",2452D )).list();
for (Emp e : elist) {
System.out.println(e.getEname() + " : " + e.getSal());
}
HibernateUtil.closeSession();
}
@org.junit.Test
// Criteria多约束查询:eq、lt、le、gt、ge
//.ignoreCase(),忽略大小写
//2452D/2452d:声明为Double类型
//.like(“类的属性”,“匹配的属性值”,MatchMode匹配模式);
//.ilike();自动忽略大小写
public void testCriteria3() {
session = HibernateUtil.getSession();
// Criteria criteria=session.createCriteria(Emp.class);
// Restrictions.lt("类的属性",查询目标值);
// Criterion criterion=Restrictions.lt("sal",2452D );
List<Emp> elist = session.createCriteria(Emp.class)
.add(Restrictions.lt("sal", 2452D))
.add(Restrictions.eq("job", "SAlesman").ignoreCase())
.add(Restrictions.ilike("ename", "R",MatchMode.ANYWHERE)).list();
for (Emp e : elist) {
System.out.println(e.getEname() + " : " + e.getSal());
}
HibernateUtil.closeSession();
}
//Criteria动态查询
//先构建一个EMP控制条件类,ename、job、sal三个属性
//如果某个属性不为空,就给criteria查询添加约束条件
//相对于SQL和HQL查询,避免了两次判断是否为空的添加约束过程
//封装类型的数值默认为null,int/long小写数值,默认为0
public void dynamicCriteria() {
session = HibernateUtil.getSession();
EmpCondition ec=new EmpCondition();
ec.setEname("R");
ec.setJob("SALESMAN");
ec.setSal(2452D);
Criteria criteria = session.createCriteria(Emp.class);
if(ec.getEname()!=null&&!ec.getEname().trim().equals("")){
criteria.add(Restrictions.ilike("ename",ec.getEname(),MatchMode.ANYWHERE));
}
if(ec.getJob()!=null&&!ec.getJob().trim().equals("")){
criteria.add(Restrictions.ilike("job",ec.getJob(),MatchMode.EXACT));
}
if(ec.getSal()!=null){
criteria.add(Restrictions.le("sal", ec.getSal()));
}
List<Emp> elist=criteria.list();
for (Emp e : elist) {
System.out.println(e.getEname() + " : " + e.getSal());
}
HibernateUtil.closeSession();
}
**//between("属性",下限值,上限值);**
public void testBetweenAnd(){
session=HibernateUtil.getSession();
Criteria criteria=session.createCriteria(Emp.class);
criteria.add(Restrictions.between("sal", 1500D, 3500D));
List<Emp> elist=criteria.list();
for (Emp e : elist) {
System.out.println(e.getEname() + " : " + e.getSal());
}
HibernateUtil.closeSession();
}
**//in("属性",List集合)**
public void inCriteria(){
session = HibernateUtil.getSession();
List<String> slist=new ArrayList<String>();
slist.add("SALESMAN");
slist.add("MANAGER");
Criteria criteria=session.createCriteria(Emp.class);
criteria.add(Restrictions.in("job", slist));
List<Emp> elist=criteria.list();
for (Emp e : elist) {
System.out.println(e.getEname() + " : " + e.getSal());
}
HibernateUtil.closeSession();
}
**// disjunction-Criteria中的where或or关系;conjunction:and**
public void testDisjunction() {
session = HibernateUtil.getSession();
Criteria criteria = session.createCriteria(Emp.class);
criteria.add(
Restrictions
.disjunction()
.add(Restrictions.between("sal", 1500D, 3500D))
.add(Restrictions.ilike("ename", "S",
MatchMode.ANYWHERE))).add(
Restrictions.ilike("job", "R", MatchMode.ANYWHERE));
List<Emp> elist = criteria.list();
for (Emp e : elist) {
System.out.println(e.getEname() + " : " + e.getJob() + " : "
+ e.getSal());
}
HibernateUtil.closeSession();
}
**//addOrder(Order.asc/desc(""))**
public void testOrder(){
session=HibernateUtil.getSession();
Criteria criteria=session.createCriteria(Emp.class);
List<Emp> elist=criteria.addOrder(Order.asc("sal")).list();
for (Emp e : elist) {
System.out.println(e.getEname() + " : " + e.getJob() + " : "
+ e.getSal());
}
HibernateUtil.closeSession();
}
**//isEmpty:判断集合属性是否没有成员**
public void testIsEmpty(){
session=HibernateUtil.getSession();
Criteria criteria=session.createCriteria(Dept.class);
criteria.add(Restrictions.isEmpty("emps"));
List<Dept> dlist=criteria.list();
for(Dept d:dlist){
System.out.println(d.getDeptName()+" "+d.getDeptNo()+" "+d.getEmps());
}
HibernateUtil.closeSession();
}
**//isNull/isNotNull:属性值是否为空**
public void testIsNull(){
session = HibernateUtil.getSession();
Criteria criteria=session.createCriteria(Emp.class);
criteria.add(Restrictions.isEmpty("job"));
List<Emp> elist=criteria.list();
for (Emp e : elist) {
System.out.println(e.getEname() + " : " + e.getJob() + " : "
+ e.getSal());
}
HibernateUtil.closeSession();
}
//分页Page.setFirstResult(0).setMaxResult(5)
public void testPage(){
session=HibernateUtil.getSession();
Criteria criteria=session.createCriteria(Emp.class);
List<Emp> elist=criteria.addOrder(Order.asc("sal")).setFirstResult(0).setMaxResults(5).list();
for (Emp e : elist) {
System.out.println(e.getEname() + " : " + e.getJob() + " : "
+ e.getSal());
}
HibernateUtil.closeSession();
}