您的位置:首页 > 其它

Hibernate的条件查询

2014-01-14 00:07 337 查看
//条件查询是更具面向对象特色的数据查询方式

package test;

import org.hibernate.*;

import org.hibernate.criterion.Restrictions;

import java.util.*;

public class CriteriaTest {

    public static void main(String[] args) {

        CriteriaTest criteriaTest = new CriteriaTest();

        criteriaTest.query();

        criteriaTest.queryWithJoin();

        HibernateUtil.sessionFactory.close();

    }

    private void query() {

        Session session = HibernateUtil.currentSession();

        Transaction tx = session.beginTransaction();

        // eq相等、gt大于、ge大于等于、lt小于、like......

        List l = session.createCriteria(Person.class).add(Restrictions.eq("name", "eee")).list();

        Iterator it = l.iterator();

        System.out.println("=====简单条件查询获取指定学生记录=====");

        while (it.hasNext()) {

            Person p = (Person) it.next();

            System.out.println(p.getName());

        }

        tx.commit();

        HibernateUtil.closeSession();

    }

    // 示范根据关联实体的属性过滤数据

    private void queryWithJoin() {

        Session session = HibernateUtil.currentSession();

        Transaction tx = session.beginTransaction();

        List l = session.createCriteria(Person.class).add(Restrictions.eq("name", "eee"))

                // 如果要增加对Student的关联类的属性的限制,则必须重新createCriteria()

                // 如果此关联属性是集合,则只要集合里任意一个对象的属性满足下面条件即可

                // .createCriteria("address").add( Restrictions.eq("name" , "address111"))

                .createAlias("address", "ad").add(Restrictions.eq("ad.name", "address111")).list();

        Iterator it = l.iterator();

        System.out.println("=====关联条件查询获取指定学生下指定地址下的记录=====");

        while (it.hasNext()) {

            Person p = (Person) it.next();

            System.out.println(p.getName());

        }

        tx.commit();

        HibernateUtil.closeSession();

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息